Сортировать по одному столбцу, а затем сгруппировать одинаковые значения во втором столбце? - PullRequest
0 голосов
/ 09 февраля 2020

В моей электронной таблице 2 столбца: Серийный номер и Дата. Я уже отсортировал столбец «Дата» в порядке возрастания, который дает результат, который выглядит следующим образом:

Serial Number     Date
22222             02/09/2020
11111             02/10/2020
33333             02/11/2020
11111             02/12/2020
22222             02/13/2020
44444             02/14/2020

Что я хотел бы сделать здесь с помощью VBA 2016, так это сгруппировать все одинаковые серийные номера вместе, имея самая короткая дата каждого серийного номера в качестве первого, например, так:

Serial Number     Date
22222             02/09/2020
22222             02/13/2020
11111             02/10/2020
11111             02/12/2020
33333             02/11/2020
44444             02/14/2020

Итак, я хочу закончить сначала таблицей самых ранних дат, но если есть несколько одинаковых серийных номеров, затем приведите их в список и сгруппируйте их по серийному номеру, но сохраняя для них порядок возрастания даты и другие серийные номера.

Я надеялся на что-то лучшее, чем a для l oop, но моя идея псевдокода была что-то вроде:

For Each cel in Range(Serial Number column)
    If vLookup cel in Range(Serial Number column) = True Then
        Get Row Number of the Match, Cut entire row, and Insert it below cels row (ie. cel.offset(1,0))
    Else
        Do Nothing
    End If
Next cel

Это будет повторять процесс для вновь вставленного серийного номера в поисках другого соответствия, в случае, если еще один ниже по списку, он поймает его , Если кто-то может помочь мне запрограммировать это, или если у них есть идея получше, я весь в ушах.

Спасибо! Рассмотрим позже сегодня вечером.

1 Ответ

0 голосов
/ 09 февраля 2020

Используйте следующий код, пожалуйста:

Sub SortTwoColumns()
  Dim sh As Worksheet
  Set sh = ActiveSheet 'use here your worksheet

   sh.Columns("A:B").Sort key1:=sh.Range("A1"), _
      order1:=xlAscending, Key2:=sh.Range("B1"), order2:=xlAscending, Header:=xlYes
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...