Я работаю над написанием сценария VBA для объединения строк, если идентификатор совпадает, а затем суммирования информации в нескольких полях и, наконец, удаления нижней строки, чтобы у меня была только одна запись для каждого идентификатора.
Отсечение экрана данных, с которыми я работаю. Строки 13 и 14 являются примером тех, которые должны быть объединены.
Я основал свой сценарий на ответе Raystafarian (последняя редакция) в приведенных ниже вопросах и ответах:
Как объединить значения из нескольких строк в одну строку в Excel?
Мой сценарий:
Sub mergeSumDelete()
Dim lastRow As Long
Dim myCell As Range
'lastRow = Cells(Rows.Count, "A").End(x1Up).Row
'Alternate way of trying to find the last row since I was having issues with the above
lastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For Each myCell In Range(Cells("A2"), Cells(lastRow, 1))
If (myCell = myCell.Offset(1)) And (myCell.Offset(0, 1) = myCell.Offset(1, 1)) Then
'Add up the data from the matching cells and put it in the top cell
myCell.Offset(0, 2) = myCell.Offset(0, 2) + myCell.Offset(1, 2)
myCell.Offset(0, 3) = myCell.Offset(0, 3) + myCell.Offset(1, 3)
myCell.Offset(0, 4) = myCell.Offset(0, 4) + myCell.Offset(1, 4)
'Delete the bottom row after data is merged
myCell.Offset(1).EntireRow.Delete
End If
Next
End Sub
Вот мои проблемы, которые у меня возникают.
Для строки, которая присваивает lastRow значение, я получаю ошибку Runtime 1004. Не уверен, что здесь происходит. Я попытался сделать это по-другому, а затем столкнулся с другой ошибкой ...
Я нашел альтернативный способ присвоить lastRow значение, которое, казалось бы, работает (или, по крайней мере, не выдало ошибку ...) Теперь я получаю сообщение об ошибке для каждого оператора, ошибка времени выполнения 5 (недопустимый вызов процедуры или аргумент).