Можно ли не допустить пустые значения для конкретных в электронной таблице ввода данных Excel (VBA?)? - PullRequest
0 голосов
/ 12 апреля 2020

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

У меня есть несколько столбцов которые я хочу убедиться, не оставлены пустыми, так как этот ввод данных осуществляется.

Например, Example data entry sheet

Здесь я ввожу данные слева направо в 3-й строке и хочу убедиться, что если человек, выполняющий ввод данных вручную, случайно пропустит столбец «Уникальный идентификатор» и сначала попытается заполнить «Тип», они будут вынуждены вернуться в ячейку «Уникальный идентификатор» или, по крайней мере, появиться всплывающее окно с предложением ввести сначала «Уникальный идентификатор».

Это что-то, что можно сделать?

1 Ответ

0 голосов
/ 12 апреля 2020

Это может быть обработано различными способами; одно из них - добавление простого правила проверки данных.

Добавьте правило проверки данных во 2-ю ячейку, которая проверяет, является ли предыдущее поле пустым. Если это так, не разрешайте ввод в ячейку и отображать всплывающее сообщение. Правила проверки данных просто должны иметь ИСТИННЫЙ результат.

Добавьте эту формулу в пользовательское правило проверки данных во 2-й ячейке.

not(isblank(c7))

enter image description here

Затем, если пользователь пытается заполнить 2-ю ячейку, пока 1-я еще не заполнена, пользователь получает сообщение с предупреждением, а затем содержимое ячейки очищается.

enter image description here

ОБНОВЛЕНИЕ # 1

Если вам нужно создать зависимость для списка проверки данных, вы можете добавить таблицу на новый лист, который будет действовать как ваш обработчик списка. Основная теория c состоит в том, что один столбец заполнен индексом каждой строки, 2-й столбец проверяет, были ли выполнены критерии, 3-й столбец содержит каждый элемент, который может появиться в списке, а 4-й столбец является формула, которая строит список на основе всех критериев.

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

enter image description here

t_FinalPlans_Medical - имя таблицы.

medicalRow_FinalPlanSelections - именованный диапазон, содержащий ячейки, имеющие правила проверки данных / выпадающие списки.

dataValid_FinalMedicalPlans_OptHeading - именованный диапазон, содержащий заголовок столбца.

INDIRECT("t_FinalPlans_Medical[[#Headers],[Column1]]")

dataValid_FinalMedicalPlans_OptList - именованный диапазон для столбца индекса.

INDIRECT("t_FinalPlans_Medical[Index]")

Столбец индекса Формула IF([@[Unselected Plans]]="","",MAX($D$7:D7)+1)

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

Столбец невыбранных планов Формула

IF(COUNTIF(medicalRow_FinalPlanSelections,[@[Final Plan Selections]])=0,[@[Final Plan Selections]],"")

Формула столбца 1

IFERROR(INDEX([Unselected Plans],MATCH(ROW()-ROW(t_FinalPlans_Medical[[#Headers],[Column1]]),[Index],0)),"")

Формула, используемая для проверки данных (динамически расширяется) OFFSET(dataValid_FinalMedicalPlans_OptHeading,1,0,MAX(dataValid_FinalMedicalPlans_OptList),1)

https://trumpexcel.com/excel-drop-down-list/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...