VBA Excelfind值旁边的第一个空单元格

可以使用一些项目的帮助。 我的表看起来像这样:

WEEK1 TEST1 VALUE
WEEK1 TEST1 [空白]
WEEK1 TEST2 [空白]
WEEK2 TEST1 VALUE
WEEK2 TEST2 [空白]
WEEK2 TEST1 VALUE

大约800行这些在不同的变化。

现在我需要findC中第一个WEEK2和TEST2旁边的空单元格。 怎么会这样做? 目的是在定义A和B的用户表单中input一个值。

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 

增加了另一个条件来检查Column-C是否为空? replace下面的代码行以validation列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