Используйте Find()
, чтобы найти соответствующую строку (если есть), затем обновите эту строку: если не найдено, добавьте новую строку
Sub update()
Dim f As Range, sht1 As Worksheet
Set sht1 = Sheets("Sheet1")
With Sheets("Sheet2")
Set f = .Range("A:A").Find(what:=sht1.Range("B1").Value, lookat:=xlWhole)
If f Is Nothing Then Set f = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0)
f.Resize(1, 5).Value = Application.Transpose(sht1.Range("B1:B5").Value)
End With
End Sub
РЕДАКТИРОВАТЬ: ячейка за ячейкой, если вам нужен больший контроль над тем, что и где
Sub update()
Dim f As Range, sht1 As Worksheet
Set sht1 = Sheets("Sheet1")
With Sheets("Sheet2")
Set f = .Range("A:A").Find(what:=sht1.Range("B1").Value, lookat:=xlWhole)
If f Is Nothing Then Set f = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0)
With f.EntireRow
.Cells(1).Value = sht1.Range("B1").value
'skip one cell then copy the rest...
.Cells(3).Resize(1, 4).Value = Application.Transpose(sht1.Range("B4:B5").Value)
'etc etc
End With
End With
End Sub