Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按键查找行excel vba_Vba_Excel - Fatal编程技术网

按键查找行excel vba

按键查找行excel vba,vba,excel,Vba,Excel,我试图在vba中创建一个宏,以从工作表1更新工作表2上的信息。各个记录通过键连接在一起。因此,一个键对应于表1中的一条记录,也对应于表2中的一条记录。我从定义在这个阶段填充数据的行开始宏,它只有a列。然后它进入一个for循环,获取整行并比较这两行,如果它们不相同,则更新它们。我不确定如何为if语句编写行来比较具有相同键的两行,因为它们不是按顺序排列的。任何帮助都将不胜感激。我已经在下面发布了我写的代码 Sub crossUpdate() Dim rng1 As Range, rng2 As Ra

我试图在vba中创建一个宏,以从工作表1更新工作表2上的信息。各个记录通过键连接在一起。因此,一个键对应于表1中的一条记录,也对应于表2中的一条记录。我从定义在这个阶段填充数据的行开始宏,它只有a列。然后它进入一个for循环,获取整行并比较这两行,如果它们不相同,则更新它们。我不确定如何为if语句编写行来比较具有相同键的两行,因为它们不是按顺序排列的。任何帮助都将不胜感激。我已经在下面发布了我写的代码

Sub crossUpdate()
Dim rng1 As Range, rng2 As Range, N As Long
Dim rng1Row As Range
Dim rng2Row As Range
Dim i As Integer, j As Integer
Dim Cell As Variant


N = Cells(Rows.Count, "A").End(xlUp).row
Set rng1 = Sheet1.Cells.Range("A2:A" & N)
Set rng2 = Sheet2.Cells.Range("A2:A" & N)


For i = 2 To rng1.Rows.Count
    Set rng1Row = rng1.Cells(i, 1).EntireRow
    Set rng2Row = rng2.Cells(i, 1).EntireRow
    Key = Sheet1.Range("A" & i)
        For j = 1 To rng1.Columns.Count
            If rng1Row.Cells(i, j).Value <> rng2Row.Cells(i, j).Value Then

             Else

            End If
        Next j
Next i

End Sub

我回答了一个类似的问题。问题是如何比较行


我的回答试图通过存储行的散列来快速进行这些比较。对于您的问题,您可以尝试将这两行转换为字符串,然后像这样比较它们。如果它们不相等,只需将其中一行复制到另一行即可

如何使用application.worksheetfunction.vlookup,使用与工作表vlookup相同的参数,例如application.worksheetfunction.vlookupKey,range,column,0。在您的代码中,rng1定义只有一列,但您在该列上循环。这仅仅是因为当前的测试状态吗?我将如何实现vlookup功能?我也不知道为什么rng1在循环中。有没有什么特别的原因让你不在第2页中包含引用第1页数据表的vlookup公式?例如,如果没有特殊原因,您可能只希望在手动触发更新时才进行更新,我建议在这种情况下,公式可能更简单。您没有接受迄今为止对您有帮助的几个答案,有什么特殊原因吗?最后一个问题以不同的用户名发布,但使用的是完全相同的Key=Sheet1.Range。。。