недавно я попытался использовать макросы для упрощения некоторых задач в Excel 2010, поскольку я работаю с огромными банками данных unfortunatey.
Я уже нашел код, который мне нужен для слияния повторяющихся строк и объединения уникальных данных/комментариев благодаря этому спасительному потоку:как объединить значения из нескольких строк в одну строку в Excel?
код был легко понять для новичка, как я (я хочу и попытаться понять, что я делаю, а не просто слепо копировать-вставить). Единственная проблема, с которой я столкнулся, заключается в том, что макрос, похоже, не останавливается на последней строке и заканчивает заполнение остальной части листа excel.
желаемый результат был получен, как показано в строке 4 до 6, но начиная строки 29...
Однако вы можете видеть, что, начиная со строки 29, макрос сохраняет ading"; " в 10-м столбце.
вот код, который я приспособилась:
Sub merge_dupes_and_comments()
'define variables
Dim RowNum As Long, LastRow As Long
Application.ScreenUpdating = False
RowNum = 2
LastRow = Cells.SpecialCells(xlCellTypeLastCell).row
Range("A2", Cells(LastRow, 10)).Select
For Each row In Selection
With Cells
'if OC number matches
If Cells(RowNum, 2) = Cells(RowNum + 1, 2) Then
'and if position and material match
If Cells(RowNum, 4) = Cells(RowNum + 1, 4) Then
If Cells(RowNum, 5) = Cells(RowNum + 1, 5) Then
'move updated comments up next to the old comment and delete empty line
Cells(RowNum, 10) = Cells(RowNum, 10) & ";" & Cells(RowNum + 1, 10)
Rows(RowNum + 1).EntireRow.Delete
End If
End If
End If
End With
RowNum = RowNum + 1
Next row
Application.ScreenUpdating = True
End Sub
Я не совсем уверен, почему он не работает и я не хочу вводить конкретную конечную строку, поскольку база данных, с которой я работаю, меняется каждую неделю.
Я попытался переопределить последнюю строку как:
Dim LastRow As Long
With ThisWorkbook.Worksheets("MasterData") 'enter name of the sheet you're working on
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
LastRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).row
Else
LastRow = 1
End If
но я заметил какие-то изменения.
буду благодарен за любую помощь!
большое спасибо заранее, KuroNavi