Excel 在vba中如何定义数组并进行比较?
我有两张表,我想在两张表中找到相同的行,所以我把第一行放在数组中,接下来我定义第一个数组…然后从第二张表中定义另一个数组,然后比较它们。。。。为什么它不起作用Excel 在vba中如何定义数组并进行比较?,excel,vba,Excel,Vba,我有两张表,我想在两张表中找到相同的行,所以我把第一行放在数组中,接下来我定义第一个数组…然后从第二张表中定义另一个数组,然后比较它们。。。。为什么它不起作用 Sub compare() Dim n(4) As Variant Dim o(4) As Variant Dim i As Integer For i = 3 To 20 'satrha For j = 2 To 4 'por kardan n(j)
Sub compare()
Dim n(4) As Variant
Dim o(4) As Variant
Dim i As Integer
For i = 3 To 20 'satrha
For j = 2 To 4 'por kardan
n(j) = Sheets("guys").Cells(i, j)
Next 'por kardan
k = 3
Do 'hhhh
For Z = 2 To 4 'por dovomi
o(Z) = Sheets("p").Cells(k, Z)
Next 'por dovomi
If n(j) = o(Z) Then
Sheets("guys").Cells(i, 1) = Sheets("p").Cells(k, 2)
flag = True
Else
flag = False
k = k + 1
End If
Loop Until flag = False 'hhhhh
Next 'satrha
End Sub
根据您现有的代码猜测,我下面的代码将在找到匹配项时将值从工作表“p”列B复制到工作表“guys”列A中
Sub compare()
Dim i As Integer
Dim j As Integer
Dim l As Integer
l = Sheets("p").Range("B65535").End(xlUp).Row
Debug.Print l
For i = 3 To 20
For j = 3 To l
If Sheets("guys").Cells(i, 2).Value = Sheets("p").Cells(j, 2).Value And _
Sheets("guys").Cells(i, 3).Value = Sheets("p").Cells(j, 3).Value And _
Sheets("guys").Cells(i, 4).Value = Sheets("p").Cells(j, 4).Value Then
Sheets("guys").Cells(i, 1).Value = Sheets("p").Cells(j, 2).Value
Exit For
End If
Next
Next
End Sub
注意,我在代码中明确地说了
Value
。这将复制计算值(例如公式的结果),而不是“原始”内容。您的循环直到flag=False
导致问题。你的两张纸上有多少行?它是否必须与工作表(“guys”)中的每一行匹配?这里最大的问题是,您在If
语句的循环外使用循环计数器j
和Z
。此时,它们都将等于5
,并导致“下标超出范围”错误。@passer不一定。大约500或更多,彼此不一样。谢谢