Долго искал, из-за отсутствия четкой терминологии не смог найти никакого решения, так что, возможно, эксперты здесь могут помочь.
Итак, я получил эту таблицу из 300+ столбцов, которые заполнены следующим образом
Строка 1 Заголовок / Имя.
Строка 2 Формула диапазона должна находиться в области ввода «Относится к», когда создается «Новое имя» для диапазона.
Row 3/22 Информация, используемая в формуле диапазона.
Чтобы использовать формулу диапазона при проверке данных на другом листе, мне нужно назвать эти диапазоны. Если я вручную ввожу «Новое имя», я могу скопировать формулу диапазона из строки 2 в область ввода «относится к», только с 300 столбцами, что потребовало бы длительного рабочего дня. Именно тогда я узнал о комбо CRTL + SHIFT + F3 , которое позволяет одновременно создавать множество именованных диапазонов на основе заголовок / имя и выбор. К сожалению, это использует местоположение выбора в качестве источника, и в моем случае это должна быть формула внутри ячейки местоположения, которая должна быть источником ...
Итак, есть ли способ использовать инструмент «Создать имена из выделенного», который использует формулу внутри ячейки в качестве источника вместо местоположения?
Вот изображение, помогающее описать проблему
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
.
E2
, а проверка цвета - в G2
. Итак, выберите ячейку G2, затем определите новый именованный диапазон col_header
как =INDEX(all_headers,1,MATCH(E2,all_headers,0))
. Чтобы проверить, работает ли оно должным образом, вы можете ввести =col_header
в любой ячейке FORM! G. Он должен вернуть код продукта. Определение последнего диапазона должно быть легкой частью.
val_list
есть COUNTA(OFFSET(col_header,2,0,50,1))
. Считает не пустые ячейки. Судя по вашему снимку экрана, все ячейки не пустые, некоторые содержат пустую строку. Замените его на SUMPRODUCT(--(OFFSET(col_header,2,0,50,1)<>""))
. Если это сработает для вас, примите ответ и проголосуйте за него, чтобы другие могли его увидеть.
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию объектов или файлов Excel или по разработке формул. Вы можете комбинировать тег Excel с тегами и вопросами VBA, VSTO, C#, VB.NET, PowerShell, OLE и другими тегами и вопросами, связанными с программированием, если это применимо. НЕ используйте с другим программным обеспечением для работы с электронными таблицами, например [google-sheets].