Vba 复制与搜索数据对应的行
我的项目在Sheet1上有旧信息,我将新数据导入Sheet2。A列(两张纸上)包含一个4位数字。我要做的是找到Sheet1上与Sheet2上的新信息具有相同4位数字的行(以确保我正在更新正确的信息),并用新信息覆盖旧条目(如果有日期更改,我也会将其高亮显示,但这并不重要;日期在E列中)。此外,如果Sheet1上没有相应的条目,我希望能够在下一行中创建新条目。到目前为止,我编写的代码在一行中没有问题,但有一些问题我无法通过:Vba 复制与搜索数据对应的行,vba,excel,Vba,Excel,我的项目在Sheet1上有旧信息,我将新数据导入Sheet2。A列(两张纸上)包含一个4位数字。我要做的是找到Sheet1上与Sheet2上的新信息具有相同4位数字的行(以确保我正在更新正确的信息),并用新信息覆盖旧条目(如果有日期更改,我也会将其高亮显示,但这并不重要;日期在E列中)。此外,如果Sheet1上没有相应的条目,我希望能够在下一行中创建新条目。到目前为止,我编写的代码在一行中没有问题,但有一些问题我无法通过: 当没有匹配项时,Do-While循环将永远运行 我不知道如何循环浏览我想
Private Sub DoWork()
Dim billOr As Range
Dim billTgt As Range
Dim tgtCell As Range
Dim orCell As Range
Dim compareBill As Integer
Dim compareDate As Integer
Dim x As Integer
Dim i As Integer
i = 1
x = 2
Set billOr = Sheets("Sheet2").Range("A" & i)
Set billTgt = Sheets("Sheet1").Range("A" & x)
Set orCell = Sheets("Sheet2").Range("E" & i)
compareBill = InStr(billOr.Value, billTgt.Value)
Do While compareBill <> 1
compareBill = InStr(billOr.Value, billTgt.Value)
Set billTgt = billTgt.Offset(1, 0)
Loop
Set tgtCell = Sheets("Sheet1").Range("E" & x)
compareDate = InStr(orCell, tgtCell)
If compareDate = 0 Then
tgtCell.EntireRow.Value = orCell.EntireRow.Value
tgtCell.EntireRow.Interior.ColorIndex = 6
Else
tgtCell.EntireRow.Value = orCell.EntireRow.Value
End If
End Sub
Private Sub-DoWork()
暗比洛尔射程
变暗billTgt As范围
变暗tgtCell As范围
变暗或小区范围
Dim compareBill作为整数
Dim比较为整数
作为整数的Dim x
作为整数的Dim i
i=1
x=2
设置billOr=图纸(“图纸2”)。范围(“A”和“i”)
设置billTgt=板材(“板材1”)。范围(“A”和“x”)
设置或单元格=图纸(“图纸2”)。范围(“E”和“i”)
compareBill=InStr(billOr.Value,billTgt.Value)
边做边比较ll 1
compareBill=InStr(billOr.Value,billTgt.Value)
设置billTgt=billTgt.Offset(1,0)
环
设置tgtCell=板材(“板材1”)。范围(“E”和“x”)
比较数据=仪表(orCell,tgtCell)
如果compareDate=0,则
tgtCell.EntireRow.Value=orCell.EntireRow.Value
tgtCell.EntireRow.Interior.ColorIndex=6
其他的
tgtCell.EntireRow.Value=orCell.EntireRow.Value
如果结束
端接头
任何帮助都将不胜感激,即使它只是为我指明了正确的方向。忽略日期部分:
Private Sub DoWork()
Dim billOr As Range
Dim billTgt As Range
Dim shtDest as Worksheet
Set billOr = Sheets("Sheet2").Range("A1")
Set shtDest = Sheets("Sheet1")
Do While billOr.value <> ""
Set billTgt = shtDest.columns(1).find(billOr.value, _
lookat:=xlwhole)
If billTgt Is Nothing Then
Set billTgt = shtDest.cells(rows.count,1) _
.End(xlUp).Offset(1,0)
Debug.Print "copying new row to " & billTgt.Address()
End If
billOr.entirerow.copy billTgt
Set billOr = billOr.Offset(1,0)
Loop
End Sub
Private Sub-DoWork()
暗比洛尔射程
变暗billTgt As范围
Dim shtDest作为工作表
设置billOr=板材(“板材2”)。范围(“A1”)
Set shtDest=板材(“板材1”)
当billOr.value“”时执行此操作
设置billTgt=shtDest.columns(1).find(billOr.value_
注视:=xlother)
如果billTgt什么都不是那么
Set billTgt=shtDest.cells(rows.count,1)_
.结束(xlUp).偏移量(1,0)
Debug.Print“将新行复制到”&billTgt.Address()
如果结束
billOr.entirerow.copy billTgt
设置billOr=billOr.偏移(1,0)
环
端接头
谢谢。这比我之前的工作方式要好,但它似乎没有从Sheet2(Sheet2上的条目在Sheet1上没有响应单元格)中捕获任何新条目,我想将其添加到Sheet1上的下一行,但我想我可以通过此操作实现。谢谢你的快速回复!对我有效-请确保您在ColA on sheet1中没有任何导致“新”数据复制到现有数据最后一行下方的内容。。。查看我的编辑