Как сортировать скопления с помощью Excel / Visual Basic

#excel #vba #vb.net #sorting #grouping

#excel #vba #vb.net #сортировка #группировка

Вопрос:

Я сталкиваюсь со следующей проблемой: у меня есть в Excel следующая база данных, и я хочу отсортировать переменную ‘Amount’ по возрастанию, принимая во внимание, что есть 3 разные группы (ГРУППА X, ЭЛЕМЕНТ ZZ И ГРУППА Z), и нужно сортировать не только группы, но и соответствующие им элементы.

  • В ГРУППЕ X есть 3 разных элемента, которые нужно сортировать по возрастанию (ЭЛЕМЕНТ XA, ЭЛЕМЕНТ XB, ЭЛЕМЕНТ XC).
  • ЭЛЕМЕНТ ZZ — это элемент без группы, поэтому его можно рассматривать как отдельную группу.
  • В ГРУППЕ Y есть 4 элемента (ЭЛЕМЕНТ YA, ЭЛЕМЕНТ YB, ЭЛЕМЕНТ YC, ЭЛЕМЕНТ YD), которые должны быть отсортированы по возрастанию.

База данных, с которой я работаю, является следующей:

Код Имя Сумма
10010 ГРУППА X 20000
10011 ЭЛЕМЕНТ XA 2000
10012 ЭЛЕМЕНТ XB 8000
10013 ЭЛЕМЕНТ XC 10000
10020 ЭЛЕМЕНТ ZZ 22000
10030 ГРУППА Y 26000
10031 ПУНКТ YA 11000
10032 ЭЛЕМЕНТ YB 5000
10033 ЭЛЕМЕНТ YC 9000
10043 ЭЛЕМЕНТ YD 1000

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

Код Имя Сумма
10030 ГРУППА Y 26000
10031 ПУНКТ YA 11000
10033 ЭЛЕМЕНТ YC 9000
10032 ЭЛЕМЕНТ YB 5000
10043 ЭЛЕМЕНТ YD 1000
10020 ЭЛЕМЕНТ ZZ 22000
10010 ГРУППА X 20000
10013 ЭЛЕМЕНТ XC 10000
10012 ЭЛЕМЕНТ XB 8000
10011 ЭЛЕМЕНТ XA 2000

Как вы можете видеть, сначала сортируются группы, а внутри каждой группы элементы также сортируются по возрастанию.

Если кто-нибудь может помочь мне решить эту проблему, я был бы очень благодарен

Комментарии:

1. Поскольку вы выполняете нелогическую сортировку (логической будет a-z, z-a), для этого вам понадобится вспомогательный столбец, поэтому в зависимости от значения Name вы можете присвоить значение и упорядочить его. Кроме того, вы пометили вопрос с помощью VBA и VB.NET , которые не являются одним и тем же. ЕСЛИ вам нужно решение на основе VBA, опубликуйте код, который вы пробовали.

2. Заранее спасибо за ваш ответ. Уже есть вспомогательный столбец с именем ‘Code’, для которого первые 4 значения одинаковы для соответствующих групп и элементов. Однако этого недостаточно для получения желаемого результата. Кроме того, другие теги в вопросах указаны только потому, что Excel может не решить эту проблему, поэтому я готов попробовать другие способы.

Ответ №1:

Это можно сделать только в Excel.

Чтобы получить результаты, которые вы показываете, вам необходимо выполнить сортировку по:

  • Group в пользовательском порядке Y,Z,X
  • а затем по сумме в порядке убывания

Группа — это первая буква последнего слова в Названии

Создайте пользовательский столбец с формулой:

 =LEFT(TRIM(RIGHT(SUBSTITUTE(B2," ",REPT(" ",99)),99)))
 

Затем войдите в диалоговое окно сортировки:

введите описание изображения здесь

Результаты

введите описание изображения здесь

Комментарии:

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

2. @FoxfireAndBurnsAndBurns На самом деле это основное применение, которое я использую для пользовательских списков в Excel 🙂