2

得到这个代码:

Dim a, i As Long
With Range("K1", Range("K" & Rows.Count).End(xlUp))
    a = .Value
End With
With CreateObject("Scripting.Dictionary")
    .CompareMode = vbTextCompare
    .Add "test", 1
    For i = 1 To UBound(a, 1)
        If .exists(a(i, 1)) Then
            Cells(i, 14).Value = 1
        Else
            Cells(i, 14).Value = 0
        End If
    Next
End With

当“测试”一词在 K 列中的任何位置时,它完全会在第 14 列中给我一个“1”。

如果我将 ".Add "test", 1" 行更改为 ".Add "21", 1" 它只返回 "0" 尽管我在 K 列中有 "21"。

网上说 .key 值可以是任何值(文本、数字等)。由于列 K 仅包含数字(1 到 25),我需要脚本来标记其中 1 个数字的出现,我真的想使用“scripting.dictionary”,因为它是最快的方法。

我做错了什么或者“scripting.dictionary”不只支持数字。

4

1 回答 1

1

解决了。需要将行更改为:

.Add 21, 1

所以21没有引号。

于 2012-07-18T08:31:56.540 回答