Дополнение обещал:
Когда вы используете список для проверки, вы должны ввести диапазон, как показано ниже.
OFFSET
функция позволяет динамически устанавливать диапазон на основе его входных критериев.
Если вы считаете это:
=OFFSET(C1,0,0,1,1)
- Аргумент 1 = Якорь ячейка
- Аргумент 2 = Число строк для перемещения, вы можете использовать минус число здесь, чтобы перемещать строки и положительные числа, чтобы переместить down
- Аргумент 3 = Количество столбцов для перемещения. Отрицательный остается положительным вправо.
- Аргумент 4 = Высота диапазона (не может быть отрицательным и не является обязательным, по умолчанию 1)
- Аргумент 5 = Ширина диапазона (не может быть отрицательной и не является обязательным, по умолчанию 1)
в этом случае, диапазон вернулись бы C1
как у нас ни одна строка или столбец не смещение и высота и ширина устанавливается в 1
MATCH
функция возвращает индекс, где появляется значение в диапазоне (диапазон должен быть шириной 1 или 1 ячейки)
На основании выше трафаретной печати =MATCH("Group2",D1:F1,0)
возвратит 2, как «группа_2» появляется во второй ячейке в D1:F1
диапазоне. («Группа1» вернет 1, «Группа 3» вернет 3, а «Группа4» вернет # Н/Д, поскольку она не существует).
Так на основе этого мы можем поставить функцию MATCH
в качестве нашего 2-го аргумента в функции OFFSET
и выбрать столбец, соответствующий первый аргумент в функции MATCH
.
=OFFSET(C1,0,MATCH("Group2",D1:F1,0),1,1)
вернется диапазон E1
как мы сдвинули столбцы 2 из C1
из-за MATCH
=OFFSET(C1,1,MATCH("Group2",D1:F1,0),3,1)
теперь будет возвращать обратно E2:E4
, как мы увеличили высоту в диапазоне до 3 и ряд смещение на 1.
И, наконец, мы можем изменить значение «Group2» в функции MATCH
на значение ячейки, которое будет означать, что диапазон будет динамически изменяться.
Здесь я использовал Cell A2
=OFFSET(C1,1,MATCH(A2,D1:F1,0),3,1)
, поэтому любое значение в ячейке A2
будет использоваться для смещения диапазона.
И последнее, что нужно сделать, это поставить динамический диапазон в проверке (я использовал B2
)
Это будет динамически установить диапазон проверки.
Когда я использую OFFSET
функцию с несколькими аргументами, и я не уверен, что это возвращение назад правильный выбор, я написал небольшой вспомогательный User Defined Function, что я просто положить в модуле VBA.
Public Function GetAddress(rng As Range) As String
GetAddress = rng.Address
End Function
Это позволяет мне вставлять формулу смещения и возвращать обратно адрес диапазона. Поэтому я могу убедиться, что это правильно.
Там может быть построен в функции для этого, но я никогда не находил его.
+1. Для более подробной информации у Контекстуров есть куча таких страниц, как [этот] (http://www.contextures.com/xlDataVal02.html). –
Я не могу использовать эту строку: «= OFFSET (HD2, MATCH (HA2, HD2: HD5,0) -1,0,1,4)», не получив обычного сообщения «Ваша формула содержит сообщение об ошибке». И это после удаления H, поскольку мои столбцы называются «A», «B» и т. Д., А не «HA», «HB» и т. Д. –
@kakemonsteret, если вы обновляете свое исходное сообщение с адресами ячеек, в которые входят ваши списки, i 'изменю мои отпечатки, чтобы они соответствовали. – Sam