В настоящее время работает в Excel 2010
Я нахожусь в процессе создания макроса для форматирования различных отчетов, чтобы листы Excel можно было вводить в инструмент автоматической загрузки.Этот макрос добавляет уникальный идентификатор номера для каждого случая, а затем разбивает случаи на несколько строк в зависимости от объема выполняемых услуг.Таким образом, первоначально случаи будут пронумерованы в столбце A как 1,2,3,4 и т. Д.Затем дела делятся на несколько строк в зависимости от количества услуг, а число в столбце A используется для группировки услуг.Таким образом, если в первом случае есть 3 услуги, во втором случае - 1 услуга, а в третьем случае - 5 услуг, столбец A будет выглядеть по убыванию 1,1,1,2,3,3,3,3,3.
Инструмент автоматической загрузки создает только 15 строк для каждого случая.Поэтому мне нужно добавить код, который будет искать столбец A, и если дублирующее значение превышает 15 экземпляров, добавить «a» в первые 15 экземпляров, «b» во вторые 15 экземпляров, «c» в третьи 15 экземпляров, и так далее.
пример:
В столбце A в порядке убывания: если идентификатор выглядит как 1,2,3,3,3,3,3,3,3,3,3,3,3,3, 3,3,3,3,3,4 Тогда макрос обновит столбец A, чтобы он выглядел следующим образом: 1,2,3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3a, 3b, 3b, 4
Спасибо за ваше время
Это код, который я разработал до сих пор:
Sub Scrub_File()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
range("A2").Select
ActiveCell.FormulaR1C1 = "1"
LastRow = range("K" & Rows.Count).End(xlUp).Row
range("A2").AutoFill Destination:=range("A2:A" & LastRow), Type:=xlFillSeries
Dim InxSplit As Long
Dim SplitCell() As String
Dim RowCrnt As Long
With Worksheets("Sheet1")
RowCrnt = 2 ' The first row containing data.
Do While True
If .Cells(RowCrnt, "AI").Value = "End" Then
Exit Do
End If
SplitCell = Split(.Cells(RowCrnt, "AI").Value, ",")
If UBound(SplitCell) > 0 Then
.Cells(RowCrnt, "AI").Value = SplitCell(0)
For InxSplit = 1 To UBound(SplitCell)
RowCrnt = RowCrnt + 1
.Cells(RowCrnt, "AI").Value = SplitCell(InxSplit)
.range(.Cells(RowCrnt, "A"), .Cells(RowCrnt, "AH")).Value = .range(.Cells(RowCrnt - 1, "A"), .Cells(RowCrnt - 1, "AH")).Value
.range(.Cells(RowCrnt, "AL"), .Cells(RowCrnt, "AX")).Value = .range(.Cells(RowCrnt - 1, "AL"), .Cells(RowCrnt - 1, "AX")).Value
Next
End If
RowCrnt = RowCrnt + 1
Loop
End With
End Sub