簡體   English   中英

VBA Excel:如何檢查一個值是否在選定的值范圍內(或當前單元格)

[英]VBA Excel: How to check if a value is in a selected range of values (or current cell)

我在一列單元格中有一個參考數據集(它可能是一行,但無論如何)。

我想瀏覽幾個工作表,檢查選定的值范圍,如果當前單元格值在參考數據中,請使用它作為值粘貼到下一個系列單元格的“偏移量”中,直到當前單元格更改為一些參考數據中的新值,此時應針對新值和下一個單元格序列重復粘貼過程。 例如

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

我懷疑是否有必要遍歷所有數據,只需在整個列中使用公式並替換為結果值即可。 像這樣:

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列中。 如果找不到匹配項,它將顯示一個空白單元格,但是您可以將其更改為所需的任何值。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM