4

При сортировке таблицы или диапазона в Excel значения ячеек и базовое форматирование, такие как жирный, курсив, цвета и т.д., Перемещаются, но следующие элементы НЕ перемещаются:

  • Границы
  • Правила проверки данных

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

Вот пример перед сортировкой:

И после сортировки (А-Я по названию "Фрукты".)

Есть ли способ заставить Excel переместить правила проверки данных вместе со значениями и форматами, когда Excel выполняет операцию сортировки?

Редактировать:

Просто чтобы уточнить, у меня есть две отдельные проблемы здесь:

  1. Основная проблема: если пользователь решит нажать кнопку «Сортировка» или параметр «Сортировка» в заголовке столбца «Фильтр», это приведет к срыву моего (сложного!) правила проверки данных.
  2. Второстепенная проблема: было бы неплохо, если бы мой лист мог быть отсортирован с использованием встроенных кнопок Excel для сортировки (это наиболее очевидные способы сортировки данных). Отдельный макрос для какой-то сортировки кажется немного странным.

Редактировать:

Мое возможное решение было просто полностью отключить сортировку, защищая рабочую книгу и отключая сортировку для всех листов. Вы можете нажимать кнопки "Сортировка", но они ничего не делают.

В качестве дополнительной меры предосторожности я добавил VBA, которая повторно применяет Protect Workbook при каждом открытии книги, и выводит рабочий лист с инструкциями по использованию и предупреждениями (например, «Не сортируйте это!».) Конечный пользователь может отменить защиту книги в любое время, так что это не надежно, но я считаю, что это лучшее, что я могу сделать.

3 ответа3

2

Вы можете создать общее правило для обработки значений pH и применить его ко всему столбцу значений. Вам просто нужно включить условие, которое проверяет Key1, чтобы увидеть, является ли значение pH; если это так, проверьте критерии; если нет, просто верните TRUE, чтобы все было разрешено.

Например, вот пользовательское правило проверки данных, примененное к C2:C6 (столбец значения 1) в вашей таблице:

=IF(B2="pH",AND(C2>=0,C2<=14,C2=INT(C2)),TRUE)

Это ограничит значения pH 0 <= pH <= 14 и только целые числа. Поскольку правило применяется ко всему столбцу, сортировка не повлияет на проверку данных.

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

=B2="pH"

0

Глядя на биты старого кода, кажется, я удалил и заново создал валидаторы:

var cellValues = activeSheet.Range[leftColumn + startingRow, Type.Missing];
cellValues.Validation.Delete();

Если вы хотите что-то сделать в Excel программно, запишите макрос> выполните операцию вручную> Остановите запись макроса> нажмите Alt + F11 и просмотрите код во вновь созданном модуле. Это быстрый способ освоения программирования на VBA. Удачи!

0

Это не совсем ответ на ваш вопрос, но я чувствую, что стоит упомянуть.

То, как ваши данные вводятся в электронную таблицу, немного необычно, и если нет особых причин, вы также можете решить проблему, немного изменив структуру электронной таблицы. Самый простой способ ввода таких данных, как ваши, - это иметь один столбец на ключ (цвет, pH, диаметр и т.д.) И один ряд на один фрукт. Таким образом, вы можете определить правила и стили для всего столбца, и вам не придется беспокоиться о сортировке.

Если вам нужен доступ к данным с использованием ключа и значения, вам могут помочь использование сводных таблиц и поиска сводных таблиц (GETPIVOTDATA) или поиска строк / столбцов (VLOOKUP / HLOOKUP).

В вашем случае ключи кажутся довольно четко определенными (в противном случае это причина для использования подхода «ключ-значение»), и учитывая, что Excel допускает тысячи столбцов, у вас тоже не останется без ключей. Использование отдельного столбца для каждой клавиши также будет функционировать как своего рода форма ввода. Вы не забудете ввести значение для фрукта, так как ячейка для этого значения будет пустой.

Если у вас есть несколько образцов (не все яблоки имеют одинаковый диаметр и т.д.), Вы сможете рассматривать каждый ряд в электронной таблице как один образец.

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

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