VBA Excel:如何检查值是否在选定范围的值(或当前单元格)

我在一列单元格中有一组参考数据(它可能是一行,但不pipe)。

我想通过几个工作表,检查一个选定的值的范围,如果当前的单元格的值在参考数据中,使用它作为粘贴到下一个单元格系列的偏移量的值,直到当前单元格已经改变到一些参考数据中的新值,此时粘贴过程应该重复用于新值和下一系列单元。 例如

Sub doStuff() Dim RefRange As Range, queryRange As Range, checkCell As Rnage String pasteDate As String Set RefRange = Range("A1:A50") Set queryRange = .Selected For Each checkCell In queryRange If checkCell.Value IN RefRange <***here's where I don't know what to use ***> pasteData = checkCell.Value ' Advance to next item Next ElseIf checkCell.Value Not In queryRange <***here's where I don't know what to use ***> ActiveCell.Offset(0,+1).Value = pasteData End If Next End Sub 

我知道如何在SQL中做这个,在VBA中有没有类似的方法?

在SQL中:

 Select a, b from table where c in ('foo', 'bar', 'baz') OR Select a, b from table where c in (select e from some_other_table) 

TIA

我怀疑是否需要遍历所有数据,只需使用整列中的公式,并用结果值replace。 喜欢这个:

 Sub Test() With ActiveSheet.UsedRange.Columns(3).Offset(1) .Formula = "=IF(ISERROR(MATCH(B2,A:A,0)),"""",B2)" .Value = .Value End With End Sub 

上面的代码查看B列中的所有值以testingA列中的匹配。 如果find匹配,则B列值显示在c列中。 如果找不到匹配项,则会显示一个空白单元格,但可以将其更改为任何您想要的。

在这里输入图像说明