我有一个带有各种单词的工作表,我将它们用作关键字。在每一列的第一行中,我都有一个标题。我想做的就是将后续各行中的每个单词分配给其对应的第1行类别。
+---+------------+-------------+
| | A | B |
+---+------------+-------------+
| 1 | Category1 | Category2 |
| 2 | Keyword1a | Keyword2a |
| 3 | Keyword1b | Keyword2b |
+---+------------+-------------+
基本上,我想将Category1分配给关键字1a到1x,依此类推。如何在VBA中完成此操作?我已经定义了集合中的类别和关键字,我只想将两者链接起来。
编辑:之所以要使用VBA,是因为我已经在使用VBA在单元格中挑选关键字。我想使用某个字符串中存在的关键字来将它们与类别名称进行匹配并输出类别(现在它仅输出存在的关键字)。
答案 0 :(得分:2)
使用字典。关键字是键,类别是值。使用Instr循环测试数据检查,以查看是否在测试数据字符串中找到了密钥。如果找到,则使用键输出关联的字典值。下面演示的原理非常容易,可以在包含测试数据的数据范围内添加另一个循环。
Option Explicit
Private Sub RunningSheetClick_Click()
Dim dict As Object, arr(), i As Long, key As Variant
Set dict = CreateObject("Scripting.Dictionary")
With ActiveSheet
arr = Intersect(.Columns("A:B"), .UsedRange).Value
For i = LBound(arr, 1) To UBound(arr, 1)
dict(arr(i, 1)) = arr(i, 2)
Next i
End With
For Each key In dict.keys
If InStr(key, [D2].Value) > 0 Then [E2].Value = dict(key)
Next key
End Sub