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

скриншот Excel

Обратите внимание, что:

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

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

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

Обратите внимание, что:

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

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

Финальный стол здесь: http://goo.gl/H118Lx

Обратите внимание, что:

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

1 ответ1

1

Вам вообще не нужен 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))


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

До

... в этот лист:

После

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .