复制与搜索数据对应的行
Copy rows which corresponds to search data
我的项目在 Sheet1 上有旧信息,我将新数据导入到 Sheet2 上。 A 列(在两张纸上)包含一个 4 位数字。我想要做的是在 Sheet1 上找到与我在 Sheet2 上的新信息具有相同 4 位数字的行(以确保我正在更新正确的信息)并用新条目覆盖旧条目(我也有它突出显示是否有日期更改,但这在这一点上并不重要;日期在 E 列中)。此外,如果 Sheet1 上没有相应的条目,我希望能够在下一个可用行中创建一个新条目。到目前为止,我编写的代码对一行没有问题,但有一些问题让我难以克服:
- 当没有匹配项时,Do While 循环将永远 运行。
- 我不知道如何循环遍历我想在 Sheet1 上搜索的所有单元格以及我在 Sheet2 上的所有搜索词(我想我必须检查每个单元格的 Sheet1 Col 信息A 对于 Sheet2 上的每个搜索词,但从我在网上看到的所有内容来看,似乎必须有更好的方法,但我太新手了,无法弄清楚)。
代码:
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()
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
我的项目在 Sheet1 上有旧信息,我将新数据导入到 Sheet2 上。 A 列(在两张纸上)包含一个 4 位数字。我想要做的是在 Sheet1 上找到与我在 Sheet2 上的新信息具有相同 4 位数字的行(以确保我正在更新正确的信息)并用新条目覆盖旧条目(我也有它突出显示是否有日期更改,但这在这一点上并不重要;日期在 E 列中)。此外,如果 Sheet1 上没有相应的条目,我希望能够在下一个可用行中创建一个新条目。到目前为止,我编写的代码对一行没有问题,但有一些问题让我难以克服:
- 当没有匹配项时,Do While 循环将永远 运行。
- 我不知道如何循环遍历我想在 Sheet1 上搜索的所有单元格以及我在 Sheet2 上的所有搜索词(我想我必须检查每个单元格的 Sheet1 Col 信息A 对于 Sheet2 上的每个搜索词,但从我在网上看到的所有内容来看,似乎必须有更好的方法,但我太新手了,无法弄清楚)。
代码:
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()
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