可以在项目上使用一些帮助。我的表看起来是这样的:VBA Excel找到值旁边的第一个空单元格
WEEK1 TEST1价值
WEEK1 TEST1 [空白]
WEEK1 TEST2 [空白]
WEEK2 TEST1价值
WEEK2 TEST2 [空白]
WEEK2 TEST1价值
大约800行这些在不同的变化。
现在我需要找到C中第一个具有WEEK2和TEST2的空单元。如何去做这件事?目的是在该单元格中输入来自定义A和B的用户表单的值。
可以在项目上使用一些帮助。我的表看起来是这样的:VBA Excel找到值旁边的第一个空单元格
WEEK1 TEST1价值
WEEK1 TEST1 [空白]
WEEK1 TEST2 [空白]
WEEK2 TEST1价值
WEEK2 TEST2 [空白]
WEEK2 TEST1价值
大约800行这些在不同的变化。
现在我需要找到C中第一个具有WEEK2和TEST2的空单元。如何去做这件事?目的是在该单元格中输入来自定义A和B的用户表单的值。
Sub FindMatch()
Dim sTxt1 As String, sTxt2 As String, vMatch As Variant
sTxt1 = """Week2"""
sTxt2 = """Test2"""
sformula = "MATCH(1,(A:A=" & sTxt1 & ")*(B:B=" & sTxt2 & "),0)"
vMatch = Evaluate(sformula)
If IsNumeric(vMatch) Then MsgBox Range("C" & vMatch).Address
End Sub
添加另一个条件检查列-C是否为空?替换下面的代码行以验证列C部分。
sformula = "MATCH(1,(A:A=" & sTxt1 & ")*(B:B=" & sTxt2 & ")*(C:C=""""),0)"
试试此代码。
Sub CheckRows()
Dim RowNo As Long
RowNo = 1
With ActiveWorkbook.Sheets(1)
Do While .Cells(RowNo, 1).Value <> ""
If UCase(.Cells(RowNo, 1).Value) = "WEEK2" And _
UCase(.Cells(RowNo, 2).Value) = "TEST2" And _
.Cells(RowNo, 3).Value = "" Then
MsgBox "Found at Row Number " & RowNo
Exit Sub
Else
RowNo = RowNo + 1
End If
Loop
End With
End Sub
Sub test()
Dim x As Range, i&: i = [C:C].Find("*", , , , , xlPrevious).Row
For Each x In Range("A1:A" & i)
If UCase(x.Value2 & x.Offset(, 1).Value2 & _
x.Offset(, 2).Value2) = "WEEK2TEST2" Then
MsgBox x.Offset(, 2).Address(0, 0): Exit For
End If
Next x
End Sub
谢谢,但此人不考虑如果C是不是空白,只是发现MATHES A&B – user2446928
完美,谢谢你的第一个! – user2446928