如何使用VBA向Excel中的类别添加关键字?

如何使用VBA向Excel中的类别添加关键字?,vba,excel,Vba,Excel,我有一张表格,上面有各种各样的单词,我用它们作为关键词。在每一列的第一行我都有一个标题。我想做的是将后续行中的每个单词分配到对应的第1行类别 +---+------------+-------------+ | | A | B | +---+------------+-------------+ | 1 | Category1 | Category2 | | 2 | Keyword1a | Keyword2a | | 3 | Keyword1

我有一张表格,上面有各种各样的单词,我用它们作为关键词。在每一列的第一行我都有一个标题。我想做的是将后续行中的每个单词分配到对应的第1行类别

+---+------------+-------------+
|   |     A      |      B      |
+---+------------+-------------+
| 1 | Category1  | Category2   |
| 2 | Keyword1a  | Keyword2a   |
| 3 | Keyword1b  | Keyword2b   |
+---+------------+-------------+
基本上,我想“分配”类别1到关键字1a到1x等等。如何在VBA中实现这一点?我已经定义了集合中的类别和关键字,我只想将两者链接起来


编辑:我想使用VBA的原因是因为我已经在使用VBA来挑选单元格中的关键字。我想使用特定字符串中存在的关键字与类别名称进行匹配,并输出类别(现在它只输出当前的关键字)。

使用字典。关键词是关键,类别是价值。使用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

使用字典。关键词是关键,类别是价值。使用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

你不需要vba。如果你有一个包含
关键字
类别
列的简单表格,你的生活会更简单。@MathieuGuindon我误解了什么吗?我有种下沉的感觉。我想使用VBA的原因是因为我已经在用它来挑选单元格中的关键字了。我想使用某个字符串中存在的关键字与类别名称进行匹配并输出类别(目前只输出当前的关键字)。@QHarr OP的列表基本上是旋转的,第1列代表“category1”,第2列代表“category2”,并添加了“category3”将需要添加一个新列,当前两列的长度可能相同,也可能不同。通过将其设置为Column1->Keyword和Column2->Category,可以将该表转换为一个实际的查找表,即使得到173个类别,数据的形状也完全相同。甚至可以有另一个包含有效类别的单独表,并且可以使用数据验证来确保查找表中只存在有效类别。您不需要vba。如果您有一个包含
关键字
类别
列的简单表,您的生活会更简单。@MathieuGuindon我误解了什么吗?我有种下沉的感觉。我想使用VBA的原因是因为我已经在用它来挑选单元格中的关键字了。我想使用某个字符串中存在的关键字与类别名称进行匹配并输出类别(目前只输出当前的关键字)。@QHarr OP的列表基本上是旋转的,第1列代表“category1”,第2列代表“category2”,并添加了“category3”将需要添加一个新列,当前两列的长度可能相同,也可能不同。通过将其设置为Column1->Keyword和Column2->Category,可以将该表转换为一个实际的查找表,即使得到173个类别,数据的形状也完全相同。甚至可以有另一个包含有效类别的单独表,并且可以使用数据验证来确保查找表中只存在有效类别。我知道如何使用查找哈哈。我编辑了我原来的帖子。我目前正在输出基于字符串的单词。我想改为输出类别。循环一个字典,并将它与我已有的一些代码结合使用;工作完美。谢谢我知道如何使用查找哈哈。我编辑了我原来的帖子。我目前正在输出基于字符串的单词。我想改为输出类别。循环一个字典,并将它与我已有的一些代码结合使用;工作完美。谢谢