2

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

我想检查几个工作表,检查选定的值范围,如果当前单元格值在参考数据中,则将其用作粘贴到下一系列单元格的偏移量中的值,直到当前单元格更改为某个参考数据中的新值,此时应为新值和下一系列单元格重复粘贴过程。例如

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

4

1 回答 1

1

我怀疑是否需要遍历所有数据,只需使用整个列中的公式并替换为结果值。像这样:

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 列中的所有值以测试 A 列中的匹配。如果找到匹配项,则 B 列值显示在 c 列中。如果未找到匹配项,则会显示一个空白单元格,但您可以将其更改为您想要的任何内容。

在此处输入图像描述

于 2012-09-15T11:03:47.943 回答