我的宏有问题Microsoft Excel。我想创建一个宏来检查在一行中是否有单词表示用户在单元格中输入了相同的单词,而不是必须检查整行以比较其他信息。在前。用户输入亚当史密斯12.05.2016和宏必须在名称列中找到名称亚当,而不是检查这个亚当是否有姓史密斯和日期12.05.2016。如果是,则打印整行。 我创建了整个宏,但是我得到了error1004应用程序定义或对象定义的错误。
Sub Test()
Dim r As Integer
Dim c1 As Integer
Dim c2 As Integer
Dim i As Integer
r = 0
c1 = 0
c2 = 0
i = 0
' Iterates through name column
Do Until Cells(r, c1).Value = ""
' If program finds the name in name row equal to name in (6, G) returns true
If Cells(r, c1).Value = Cells(6, G).Value Then
' Iterates through surname row
Do Until Cells(r, c2).Value = ""
' If surname is the same and date is on the right of the surname Return tur
If Cells(r, c2).Value = Cells(6, H).Value And Cells(r, c2 + 1).Value = Cells(6, i) Then
Do Until i <= 0
' Output whole data from the row
Cells(10, H + i).Value = Cells(r, c1 + i).Value
i = i + 1
Loop
End If
c2 = c2 + 1
Loop
End If
r = r + 1
Loop
End Sub
答案 0 :(得分:1)
你可以使用数组公式,一个普通的公式,但可以在许多单元格上工作,所以你需要CTRL SHIFT ENTER,它将是这个
=MAX(IF(CONCATENATE($I$1:$I$3," ",$J$1:$J$3)=L1,ROW($I$1:$I$3)))
我的名字在I中,在J中的姓氏和L1中的数据条目,这给出了事件的行号,然后您可以使用INDEX
来获取值,或OFFSET
https://support.office.com/en-gb/article/INDEX-function-a5dcf0dd-996d-40a4-a822-b56b061328bd