簡體   English   中英

VBA中的WorksheetFunction

[英]WorksheetFunction in VBA

我在以下方面遇到了麻煩。 我想使用match函數檢查(對於A列中不為空的每個值)該值是否存在於B列中,如果確實存在,我希望它將該值發布到同一單元格目標中的sheet2中。 一旦到達“匹配”行,即“對象不支持此屬性或方法”,我就會收到錯誤消息。 以防萬一我選擇編碼的方式使我想要執行的功能混亂=match(cl.address; B; 0) 我的代碼是

Sub UseFunction()
    Dim myRange As Range

    For Each cl In Worksheets("sheet1").Range("A:A")
        If cl.Value <> "" Then
            If cl.WorksheetFunction.Match(cl.Address, B, 0) Then
                Worksheets("sheet2").cl.Value = Worksheets("sheet1").cl.Value
            End If
        End If
    Next cl
End Sub

=match(cl.address; B; 0)不是有效的公式。 如果您想說“ B欄”,那就是B:B

cl.WorksheetFunction.Match應該是Application.WorksheetFunction.Match

對於第二個參數,您需要Worksheets("sheet1").Columns(2)Worksheets("sheet1").Range("B:B")

Match(cl.address, ...)將嘗試查找以字符串形式存儲在B列中的cl的地址,而不是cl的值。 如果要查找值,請使用Match(cl.value, ...)

Private Const SOURCE_SHEET = "sheet1"
Private Const TARGET_SHEET = "sheet2"

Sub test()
    Dim cl As Range, matchResult As Double
    Dim source As Worksheet
    Dim target As Worksheet

    Set source = Worksheets(SOURCE_SHEET)
    Set target = Worksheets(TARGET_SHEET)

    On Error Resume Next

    With source
        For Each cl In .UsedRange.Columns("A").Cells
            If cl.Value <> "" Then
                matchResult = 0
                matchResult = WorksheetFunction.Match(cl.Value, .UsedRange.Columns("B"), 0)
                If (matchResult > 0) Then target.Cells(cl.Row, cl.Column).Value = cl.Value
            End If
        Next cl
    End With

    On Error GoTo 0
End Sub

暫無
暫無

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

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