Visual Basic宏错误

时间:2016-07-20 09:17:32

标签: vba runtime-error

我的宏有问题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

1 个答案:

答案 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