#sql #excel #vba
#sql #excel #vba
Вопрос:
У меня восемь столбцов данных. Имеется 500 строк. Они сортируются по столбцам a, а затем b.
Итак, это выглядит так:
1111|1536|Data...
1111|1536|Data...
1111|1537|Data...
1112|1536|Data...
1112|1536|Data...
1112|1536|Data...
1112|1536|Data...
1112|1536|Data...
1112|1537|Data...
У меня возникли проблемы с написанием кода, который в девятом столбце начинает перенумеровывать строки после того, как комбинация столбцов a и b изменяется на что-то другое. Поэтому я бы хотел, чтобы это выглядело так:
Item 1|1111|1536|Data...
Item 2|1111|1536|Data...
Item 1|1111|1537|Data...
Item 1|1112|1536|Data...
Item 2|1112|1536|Data...
Item 3|1112|1536|Data...
Item 4|1112|1536|Data...
Item 1|1112|1537|Data...
Item 2|1112|1537|Data...
Я не могу агрегировать только на основе этих двух столбцов, потому что все восемь создают уникальную комбинацию данных, и мне нужно сохранить эту комбинацию.
Ответ №1:
Вот что я использовал:
Sub Item()
Dim ItemVar As String
Dim ColAVar As String
Dim ColBVar As String
Dim n As Integer
Dim i As Integer
ItemVar = "Item "
n = 1
ThisWorkbook.Sheets(1).Range("A1").Select
ActiveCell.EntireColumn.Insert
ActiveCell.Value = ItemVar amp; CStr(n)
For i = 1 To 499
ColAVar = ActiveCell.Offset(0,1).Value
ColBVar = ActiveCell.Offset(0,2).Value
ActiveCell.Offset(1, 0).Select
IF ActiveCell.Offset(0,1).Value = ColAVar And ActiveCell.Offset(0,2).Value = ColBVar Then
n = n 1
ELSE
n = 1
End If
ActiveCell.Value = ItemVar amp; CStr(n)
Next i
End Sub