Excel Sheet1,ColumnA 是
1) 3, 2, 4
2) 1
这些数字指的是 Sheet2 中的行号,ColumnB,其中包含标识符
1) foo
2) bar
3) eggs
4) sausage
我最终应该得到 Sheet 1 中的一列,其中包含
1) eggs, bar, sausage
2) foo
我很确定我可以用 Python 脚本来做这件事,但是我更喜欢用 Excel 来做。不幸的是,我对 VBA 几乎一无所知。
文本到列不行:您无法定位到新工作表,但 Sheet1ColumnA 中的单元格可能包含任意数量的项目。
编辑:VLOOKUP 在这里不起作用,因为它按单元格查找内容。这里我想按单元格查找参考。如果我能让 INDEX 迭代单个单元格中多个逗号分隔的值,那么 INDEX 就可以了。我需要先解析单元格中的值,然后使用某种 INDEX 来查找每个值的对应查找值。
答案1
这个 VBA 代码可以达到这个目的:
Public Function mysearch(value As String)
Dim myrows() As String
myrows = Split(value, ",")
result = ""
For i = LBound(myrows) To UBound(myrows)
a = ThisWorkbook.Worksheets(2).Cells(myrows(i), 2) 'The first 2 is the number of sheet and the last 2 is the column.
result = result & a & ","
Next i
result = Left(result, Len(result) - 1)
mysearch = result
End Function
ALT使用+转到宏/VBA F11。在 ThisWorkbook 下插入一个模块并将代码粘贴到右侧。
如果您的参考数据在 Sheet1 的 A 列中,则将其放入单元格 B1 中=mysearch(A1)
,如果数据在 Sheet2 的 B 列中,您将得到结果。