Очень плохо знаком с VBA (и программированием в целом), пытаясь научить себя информации, которую я могу найти в Интернете.
Запись макроса, который будет копировать данные о производительности сотрудников, которые построчно заносятся в ГЛАВНЫЙ лист, на лист LOG рабочей книги.
До этого момента мне удавалось заставить его работать нормально. Но теперь я хочу добавить функцию FIND, чтобы определить, существует ли уже строка данных на листе LOG, чтобы я мог затем использовать оператор IF ... THEN:
- Если данные по конкретному сотруднику И дате не еще существуют, то эта строка копируется в первую пустую строку листа журнала.
- Если уже существует , существующая строка данных на листе журнала будет перезаписана.
Вот что у меня есть:
Sub CopyToLog()
Dim RowCount As Integer
Sheets("MAIN").Select
For RowCount = 1 To Range("WeeklyData").Rows.Count
With Sheets("LOG").Range("A:B")
Set Dupe = .Find(Sheets("MAIN").Range("B5:C5").Offset(RowCount - 1, 0), LookIn:=xlValues)
Range("B5:F5").Offset(RowCount - 1, 0).Select
Selection.Copy
Sheets("LOG").Select
If Dupe Is Nothing Then
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
Dupe.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End With
Sheets("MAIN").Select
Next RowCount
End Sub
Однако это не работает. Похоже, проблема в функции поиска:
With Sheets("LOG").Range("A:B")
Set Dupe = .Find(Sheets("MAIN").Range("B5:C5").Offset(RowCount - 1, 0), LookIn:=xlValues)
I необходимо для проверки обоих Дата и Employee (столбцы B и C на ГЛАВНОМ листе против столбцов A и B на листе LOG), однако, кажется, что формула в том виде, в каком она здесь, сравнивает только первый столбец (Дата) В результате данные для одного сотрудника теперь перезаписываются следующим сотрудником, если они относятся к той же дате.
Можно ли использовать «Найти» только для поиска значения в одной ячейке, а не для диапазона двух соседних ячеек? Если да, то какие советы как обойти это?