[英]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.