我正在尝试合并两个范围,然后将完整的术语列表作为逗号分隔列表加入。
两个范围都是术语列表:即ManualTags是A1:A5
,tag1, tag2, tag3
,依此类推。动态代码是同一种类型的列表,但只是不同的单词,位于B1:B10
。
所以我这样称呼它:SEARCHFORTAGS(A1:A5, B1:B10)
这有效:
Function SEARCHFORTAGS(ManualTags As Range, DynamicTags As Range)
SEARCHFORTAGS = Join(Application.Transpose(ManualTags.Value), ", ")
End Function
并返回:"tag1, tag2, tag3, etc"
但是当我尝试首先组合两种类型的标签然后将它们组合起来时,它会失败。
Function SEARCHFORTAGS(ManualTags As Range, DynamicTags As Range)
joinedTags = Union(ManualTags, DynamicTags)
SEARCHFORTAGS = Join(Application.Transpose(joinedTags.Value), ", ")
End Function
返回#VALUE!
我在哪里错了?
答案 0 :(得分:1)
Transpose方法失败,错误1004"无法获取WorksheetFunction类的转置属性"当传递多区域范围时。
多区域范围由Union方法生成。在行joinedTags = Union(ManualTags, DynamicTags)
下面添加的以下代码将遍历Areas集合并在调试窗口中显示每个项目的地址:
Dim unionArea As Excel.Range
For Each unionArea In joinedTags.Areas
Debug.Print unionArea.Address
Next
在你的情况下,只要作为参数传递的每个范围是单区域并且只有一列,这个函数就可以工作:
Function SEARCHFORTAGS(ManualTags As Range, DynamicTags As Range)
SEARCHFORTAGS = Join(Application.Transpose(ManualTags.Value), ", ") & ", " & Join(Application.Transpose(DynamicTags.Value), ", ")
End Function