Excel UDF 在已关闭的工作簿中引用表以进行查找
Posted
技术标签:
【中文标题】Excel UDF 在已关闭的工作簿中引用表以进行查找【英文标题】:Excel UDF to reference table in closed workbook for lookup 【发布时间】:2018-04-19 11:40:45 【问题描述】:我有一个有效的 UDF,它根据所选单元格的第一个字母分配用户名。字母表和用户名列表内置在 VBA 中的函数中,因此更新很繁琐,所以我正在寻找替代方法。
我在工作簿中创建了一个表格,任何人都可以更轻松地更新作业。我已经做了一些努力,但是我无法通过查找表格来让 UDF 正确分配用户名。下面是一种尝试,要么我偏离了目标,要么这无法完成。想法?
Function Test(Optional Cell As String) As String
Dim Name As Variant, Alpha As Variant, ATable As Variant
Dim i As Integer
If UCase(Left(Cell, 1)) = "A" Then
Alpha = UCase(Left(Cell, 2))
Else: Alpha = UCase(Left(Cell, 1))
End If
ATable = Workbook("C:\filepath\").Worksheets("sheet1").ListObjects("ALPHA").DataBodyRange.Value
For i = LBound(ATable) To UBound(ATable)
If ATable(i, 1) = Alpha Then
Name = ATable(i, 2)
End If
Next i
Test = Name
End Function
UDF 旨在用于任何打开的工作簿,而表工作簿将被关闭。
【问题讨论】:
工作簿必须打开才能成为Workbooks
集合的一部分。
如果有一个Workbook_Open
或Workbook_Activate
宏从外部表工作簿中检索最新表,将其复制到隐藏工作表,然后使用VLOOKUP
,这不是更容易吗? ?
这可能是我必须走的路,但我试图以 UDF 的形式完成,因为这是最终用户的偏好。谢谢。
【参考方案1】:
要从已关闭的工作簿中获取数据,您必须打开它 - Pulling data from a closed workbook macro
UDF
无法打开工作簿。 Description of limitations of custom functions in Excel.
【讨论】:
我害怕什么。谢谢你的澄清。以上是关于Excel UDF 在已关闭的工作簿中引用表以进行查找的主要内容,如果未能解决你的问题,请参考以下文章