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

Итак, я получил эту таблицу из 300+ столбцов, которые заполнены следующим образом

Строка 1 Заголовок / Имя.

Строка 2 Формула диапазона должна находиться в области ввода «Относится к», когда создается «Новое имя» для диапазона.

Row 3/22 Информация, используемая в формуле диапазона.

Чтобы использовать формулу диапазона при проверке данных на другом листе, мне нужно назвать эти диапазоны. Если я вручную ввожу «Новое имя», я могу скопировать формулу диапазона из строки 2 в область ввода «относится к», только с 300 столбцами, что потребовало бы длительного рабочего дня. Именно тогда я узнал о комбо CRTL + SHIFT + F3 , которое позволяет одновременно создавать множество именованных диапазонов на основе заголовок / имя и выбор. К сожалению, это использует местоположение выбора в качестве источника, и в моем случае это должна быть формула внутри ячейки местоположения, которая должна быть источником ...

Итак, есть ли способ использовать инструмент «Создать имена из выделенного», который использует формулу внутри ячейки в качестве источника вместо местоположения?

Вот изображение, помогающее описать проблему снимок экрана, чтобы показать проблему

0
user3155347 26 Авг 2014 в 17:13
Вы уверены, что вам нужно 300 различных именованных диапазонов для проверки? Дополнительная информация о построении второго листа может быть полезна. Возможно, вы могли бы решить проблему с помощью всего лишь одного именованного диапазона.
 – 
BrakNicku
26 Авг 2014 в 19:32
300 может быть немного меньше, но должно быть больше 200 строк. В этом документе я создаю форму заказа. У нас около 400 продуктов в различных цветовых сочетаниях.
 – 
user3155347
27 Авг 2014 в 02:16
Я построил лист, который при вводе названия продукта или кода автоматически заполняет соответствующее название / код, цену, минимальный объем заказа и скоро будет выпадающий список проверки данных доступных цветов. Все ячейки зависят от введенного имени или кода. Поэтому, когда, например, «продукт 1» вводится в строку, он ищет соответствующие цвета на другом листе, а затем превращает их в динамический список, который должен заполнять данные проверки. Когда в строке 1 вводится другой товар, он должен возвращать соответствующие цвета.
 – 
user3155347
27 Авг 2014 в 02:16
Проверка данных в строке 1 всегда основана на динамическом диапазоне 1, динамическом диапазоне 2 в строке и т. Д. Надеюсь, это проясняет ситуацию. Спасибо за ваш ответ!
 – 
user3155347
27 Авг 2014 в 02:17

1 ответ

Лучший ответ

Вы должны решить эту проблему, используя 1 именованный диапазон для каждой проверки (плюс 2 дополнительных, чтобы сделать формулу менее сложной).

Первый именованный диапазон (all_headers) должен быть определен как:

=OFFSET('C'!$A$1,0,0,1,COUNTA('C'!$1:$1))

Он возвращает диапазон с заголовками (названиями продуктов или кодами) из листа C. Мы предполагаем, что первый столбец - это A и между ними нет пустых столбцов.

Далее нам нужно выбрать правый столбец. Здесь становится немного сложнее. В строке, где вы хотите проверить цвета, у вас должно быть точно такое же название продукта или код, который используется в заголовках листов C. Если эта информация находится в ячейке A2, вам следует:

  • выберите ячейку в той же строке и в столбце, где должна быть проверка цвета (например, B2)
  • определите новый именованный диапазон col_header по следующей формуле:

    =INDEX(all_headers,1,MATCH(A2,all_headers,0))
    

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

Последним шагом является определение именованного диапазона val_list со ссылкой на список цветов из выбранного столбца:

=OFFSET(col_header,2,0,COUNTA(OFFSET(col_header,2,0,50,1)),1)

Вы упомянули, что вторая строка не содержит данных, поэтому в формуле дважды присутствует параметр 2. Если вы удалите его, используйте вместо него 1. 50 - максимальное количество цветов - вы можете его настроить.

Теперь вы можете использовать val_list для проверки в любой ячейке. Он должен предоставить вам правый список, если ячейка слева содержит действительное название / код продукта из заголовка листа C.

0
BrakNicku 27 Авг 2014 в 12:08
Спасибо, сэр, я понимаю поток, но не понимаю сложной части .. s13.postimg. org / r55wjyn5z / Capture.png это ФОРМА! лист, на котором пользователь должен ввести заказ. Все синие колломы заполняются автоматически, а в столбце G должна выполняться проверка. Все ячейки на этом листе заполнены информацией на листе X! который является импортом нашего основного листа продукта, содержащего все названия / коды и цвета продуктов.
 – 
user3155347
28 Авг 2014 в 14:11
s16.postimg.org/i2apw99k5/Capture2.png Это то, что я понял из первой части вашего комментария. диапазон All_Headers должен быть первой формулой СМЕЩЕНИЯ, основанной на строке B $ 2: 2, которая содержит точные коды продуктов. Я заполнил строку All_Headers ссылкой на столбец FORM! E. Имея эту информацию, не могли бы вы еще раз объяснить, где я должен это делать ?: "выберите ячейку в той же строке и в столбце, где должна быть проверка цвета (например, B2)" Кстати, действительно благодарен за вашу помощь, огромное спасибо!
 – 
user3155347
28 Авг 2014 в 14:16
Код вашего продукта находится в E2, а проверка цвета - в G2. Итак, выберите ячейку G2, затем определите новый именованный диапазон col_header как =INDEX(all_headers,1,MATCH(E2,all_headers,0)). Чтобы проверить, работает ли оно должным образом, вы можете ввести =col_header в любой ячейке FORM! G. Он должен вернуть код продукта. Определение последнего диапазона должно быть легкой частью.
 – 
BrakNicku
28 Авг 2014 в 15:12
Потрясающий! Это работает, это сэкономит мне много работы. Однако остается только одна проблема. Выпадающий список всегда состоит из 20 опций, что в большинстве случаев приводит к появлению множества пустых опций в выпадающем списке. Другими словами, формула не исключает пустые (выглядящие) ячейки в таблице C! B3: Z23. В любом случае, чтобы получить здесь какую-то динамическую функцию, чтобы исключить пустые ячейки?
 – 
user3155347
29 Авг 2014 в 14:32
Причина этого и решение довольно просты. В val_list есть COUNTA(OFFSET(col_header,2,0,50,1)). Считает не пустые ячейки. Судя по вашему снимку экрана, все ячейки не пустые, некоторые содержат пустую строку. Замените его на SUMPRODUCT(--(OFFSET(col_header,2,0,50,1)<>"")). Если это сработает для вас, примите ответ и проголосуйте за него, чтобы другие могли его увидеть.
 – 
BrakNicku
29 Авг 2014 в 21:38