VBA Macro для сортировки и применения условного форматирования к диапазону ячеек с динамическим числом строк

У меня есть диапазон (изображение ниже).

Скриншот Excel

Обратите внимание:

  • Диапазон генерируется другим приложением, поэтому количество строк постоянно меняется и не форматируется как таблица Excel.
  • Однако количество столбцов фиксировано.
  • Всегда есть строка Totals , которая всегда является последней строкой (ячейки за ней, однако, содержат формулу, оценивающую «)

Мне нужна помощь с макросом VBA, который будет сортировать диапазон с помощью заголовка D качестве ключа (по возрастанию):

[См. Ссылку на отсортированную таблицу ниже]

Обратите внимание:

  • Totals (которая всегда является последней строкой) должна игнорироваться и не сортироваться.

После такого сортирования я хочу, чтобы тот же макрос VBA применял условное форматирование к диапазону с использованием того же заголовка D что и ключ, – форматирование применяет границу вокруг диапазона, где D – то же самое:

Итоговый стол находится здесь: http://goo.gl/H118Lx

Обратите внимание:

  • Я не хочу, чтобы граница вокруг уникальных значений в заголовке D т.е. строки, где значение cell-value не больше 1.

One Solution collect form web for “VBA Macro для сортировки и применения условного форматирования к диапазону ячеек с динамическим числом строк”

Вам вообще не нужен VBA. Вам просто нужно лучше понять гибкость условных форматов. Из-за этого я собираюсь ответить на этот вопрос, хотя он плохой.

Вы можете сортировать по столбцу D как есть, а итоговая строка будет внизу, если она единственная с пробелом в ней. Примените условные форматы ко всему столбцу, как показано ниже.

Формат: границы слева
Диапазон: A:A
Формула: =AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

Формат: границы справа
Диапазон: E:E
Формула: =AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

Формат: границы сверху
Диапазон: A:E
Формула: =AND($D1<>"",$D1<>OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0))

Формат: границы внизу
Диапазон: A:E
Формула: =AND($D1<>"",$D1=OFFSET($D1,-1,0),$D1<>OFFSET($D1,1,0))


Этот метод превратит этот лист:

До

… в этот лист:

После

  • Диалоговое окно VBA для выбора диапазона в разных книгах
  • Лучше ли использовать ADO или DAO в Access 2007?
  • Как использовать workbook.saveas с автоматической перезаписью
  • Расширение формулы ячейки, разрешающей все ее ссылки (прецеденты)
  • Excel VBA - добавление элемента в конец массива
  • Lookbehind в regex для VBA?
  • Workbooks.Open метод в VBA
  • Последняя непустая ячейка (столбец) в данной строке; Excel VBA
  • Как использовать FileSystemObject в VBA?
  • Как я могу определить, существует ли лист a в рабочей книге?
  • Рабочий лист Excel VBA Load в функции
  • Interesting Posts

    Как заблокировать одну строку

    Асинхронные сетевые операции никогда не заканчиваются

    Анализ кода выполнения (FxCop> 10) в агенте сборки без установки Visual Studio

    Как изменить цвет шрифта консоли node.js?

    Fsck error: в настоящее время поддерживается только 1 или 2 FAT, а не 34

    Как изменить комбинацию клавиш для переключения между виртуальными рабочими столами в Windows 10?

    Как отправить пакет raw ethernet с C #?

    Проводник Windows сортирует файлы и папки отдельно

    Где `% p` полезно использовать printf?

    Windows 10 Start Menu останавливает работу

    UITableview с более чем одной пользовательской ячейкой с Swift

    Зачем использовать ICollection, а не IEnumerable или List для отношений many-many / one-many?

    Удаление десериализации JSON в .NET-объект с использованием Newtonsoft (или LINQ to JSON, возможно?)

    Почему мы должны использовать макеты xml?

    Windows 8 отображает разделы linux ext4 как RAW

    Давайте будем гением компьютера.