Как отсортировать строки в столбце A в ListObject VBA с параметром в столбце B
У меня есть таблица в Excel, которая заполняется через макрос Listobject из базы данных.
Я могу отсортировать таблицу по следующему коду:
'Sort on projecttabel
Dim lo As Excel.ListObject
Set lo = Plan.ListObjects(1)
With lo
.Sort.SortFields.Clear
.Sort.SortFields.Add _
Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[klant]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add _
Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[Status]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add _
Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[RFO plandatum]"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add _
Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[Uitvoeren montage plan start]"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
"Состояние" имеет несколько целочисленных значений в диапазоне от 1 до 100. Я хотел бы отсортировать строки на основе их статуса И другого столбца. Проблема, с которой я сталкиваюсь, заключается в том, что "второй столбец" для сортировки отличается для каждого статуса.
Я хотел бы создать таблицу типа Gant, в которой отсортированы различные столбцы даты. По убыванию для каждого статуса. Например (ДД-ММ-ГГГГ)
[Status] [date1] [date2] [date3]
1 **10-01-2015** 12-02-2015 31-03-2015
1 **09-01-2015** 14-02-2015 10-03-2015
1 **08-01-2015** 06-02-2015 05-03-2015
1 **07-01-2015** 18-02-2015 28-03-2015
2 17-01-2015 **15-02-2015** 10-03-2015
2 27-01-2015 **14-02-2015** 10-03-2015
2 04-01-2015 **13-02-2015** 16-03-2015
2 31-01-2015 **05-02-2015** 10-03-2015
5 18-01-2015 12-02-2015 **30-03-2015**
5 31-01-2015 18-02-2015 **27-03-2015**
5 17-01-2015 04-02-2015 **26-03-2015**
5 07-01-2015 27-02-2015 **08-03-2015**
5 09-01-2015 24-02-2015 **03-03-2015**
и т.д. Возможно ли это?
1 ответ
Нужно добавить рабочее поле в таблицу, назовите его "Sort.Key", затем введите эту формулу в это поле:
=CONCATENATE([@Status],CHAR(133),CHOOSE([@Status],[@date1],[@date2],,,[@date3]))
Теперь отсортируйте таблицу, используя поле "Sort.Key"