#excel #vba
#excel #vba
Вопрос:
Мне нужна помощь в создании кода VBA, который принимает данные, собирает столбец даты (столбец A), вставляет для каждого, затем для каждой пары столбцов сортирует его.
Данные начинаются следующим образом
Date, A, B, C, ...
01/02/2019, 100, 110, 120, ...
02/02/2019, 101, 107, 124, ...
03/02/2019, 102, 107, 123, ...
04/02/2019, 101, 108, 123, ...
Сначала он должен вставить дату в соответствии
Date, A, Date, B, Date, C, ...
01/02/2019, 100, 01/02/2019, 110, 01/02/2019, 120, ...
02/02/2019, 101, 02/02/2019, 107, 02/02/2019, 124, ...
03/02/2019, 102, 03/02/2019, 107, 03/02/2019, 123, ...
04/02/2019, 101, 04/02/2019, 108, 04/02/2019, 123, ...
Затем он должен принимать столбцы попарно и сортировать по второму столбцу, т.е
Date, A, Date, B, Date, C, ...
01/02/2019, 100, 02/02/2019, 107, 01/02/2019, 120, ...
02/02/2019, 101, 03/02/2019, 107, 03/02/2019, 123, ...
04/02/2019, 101, 04/02/2019, 108, 04/02/2019, 123, ...
03/02/2019, 102, 01/02/2019, 110, 02/02/2019, 124, ...
Пока что у меня есть код, который находит последний столбец в строке, который возвращает столбец laast в качестве ссылки на строку (например, «GM»)
Function ColumnLetter() As String
Dim sht As Worksheet
Dim LastColumn As Long
Dim LastColumnStr, ColumnPaste As String
Dim p As Long
Set sht = ThisWorkbook.Worksheets("srtData")
LastColumn = sht.Range("A1").CurrentRegion.Columns.Count
Dim n As Long
Dim c As Byte
Dim s As String
n = LastColumn
Do
c = ((n - 1) Mod 26)
s = Chr(c 65) amp; s
n = (n - c) 26
Loop While n > 0
ColumnLetter = s
End Function
Однако я понятия не имею, как выполнить итерацию, а затем отсортировать по второму столбцу. В идеале я просто хочу иметь такую функцию
Function sortallData(dim wsTest as String)
, где я могу просто вызвать функцию, введя имя листа.
Комментарии:
1. Разбейте его на задачи. Похоже, вам нужно вставить несколько столбцов, скопировать столбец A, а затем выполнить некоторую сортировку.
2. Итерация для каждого другого столбца легко достижима с помощью простого
For...Next
цикла, напримерFor i = 1 to 15 Step 2
Ответ №1:
В конце концов, я действительно последовал совету Tims. Я разделил это на 3 разных сценария, один из которых повторяется путем выбора столбца, вставки и вставки. Следующий затем сортирует каждый столбец.