Страницы: 1
RSS
Динамическая "таблица" для ВПР, Связка ВПР+ИНДЕКС+ПОИСКПОЗ
 
Добрый вечер!
В этой теме многоуважаемый Михаил С. предложил, на мой взгляд, очень элегантное решение:
Код
=ВПР(B3;ИНДЕКС(G3:G17;ПОИСКПОЗ(B2;F3:F17;0)):ИНДЕКС(H3:H17;ПОИСКПОЗ(B2;F3:F17));2;0)
формула, в которой каждый из двух блоков ИНДЕКС(..ПОИСКПОЗ...) возвращает значение соответствующей ячейки, НО их связка (через двоеточие) для ВПР является аргументом "таблица", в которой ВПР и ищет значение. Объясните неразумному логику формулы? Как такое может быть? Роль двоеточия?
Мануалов, справок и поисков "скурил" достаточно. Сразу прошу меня простить ("прощенное воскресенье" все-таки  :) )
Файл из вышеуказанной темы прилагаю
Спасибо
Согласие есть продукт при полном непротивлении сторон.
 
Очень просто. Можно было использовать функцию СМЕЩ. Короче, понятнее... Но - летучая.
ИНДЕКС хоть и длиннее, но не пересчитывается при изменениях на листе.

Двоеточие - разделение (вернее - объединение) начала и конца диапазона.
ИНДЕКС():ИНДЕКС()
 
vikttur,по отдельности мне все это понятно, но вот в связке...Как ИНДЕКСы, возвращая каждый по отдельности значение, через двоеточие превращаются в диапазон?
Вот только что наткнулся
Цитата
Сама по себе функция ИНДЕКС возвращает содержимое ячейки. Функция ИНДЕКС, как элемент ссылки на диапазон, возвращает ссылку на ячейку (адрес).
Спасибо всем!
Изменено: Sanja - 02.03.2014 22:33:11
Согласие есть продукт при полном непротивлении сторон.
 
Почему в формуле индекс возвращает ячейку (или адрес)
Если просто вырезать этот кусок =ИНДЕКС(G3:G17;ПОИСКПОЗ(B2;F3:F17;0))
то возвращается значение
Vitotronic 100 KC3
чуть погуглил...
Цитата
Функция ИНДЕКС
Возвращает значение или ссылку на значение из таблицы или диапазона. Функция ИНДЕКС имеет две синтаксические формы: ссылка и массив.
Эта функция такая умная, что сама решает что ей возвращать? Просто ранше как то не обращал внимание, что может возвращать что то кроме значения
Да, если разделить формулу на части - т о кажется, что два строковых значения превращаются в диапазон:-)
Изменено: pharmaprofi - 02.03.2014 23:02:49
 
pharmaprofi,спасибо, тоже нашел!
Век живи, ну и т.д.!
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
Sanja пишет:
ИНДЕКСы, возвращая каждый по отдельности значение
ИНДЕКС() может и по отдельности возвращать массив, если второй или третий аргумент (номер строки или номер столбца) задать равным нулю.
Например, ИНДЕКС(F3:H17;0;2) вернет массив - значения диапазона G3:G17
Изменено: Pelena - 03.03.2014 00:23:02
 
Pelena,Спасибо! Час от часу не легче!
Согласие есть продукт при полном непротивлении сторон.
 
Pelena, смею выразить Вам свою огромную благодарность. Доселе ошибочно полагал, что ИНДЕКС() возвращает только одну ячейку.
Sanja, и Вам благодарствую, что подняли этот вопрос.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
JayBhagavan пишет:
Доселе ошибочно полагал, что ИНДЕКС() возвращает только одну ячейку.
Индекс, при работе с диапазоном, возвращает не ячейку, а ссылку на ячейку (или строку/столбец).
 
Михаил С., спасибо. Понял. Неверно выразился.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Sanja, контрольный выстрел: ИНДЕКС может работать в формуле массива :)
В смысле: принимать аргумент как массив.
=ИНДЕКС(A1:A10;Ч(ИНДЕКС(СТРОКА(1:5);)))
 
vikttur, КАК? В смысле откуда такие познания? Опытным путём? Или "курите" что-то "элитное" (в смысле литературы)  :) ?
Согласие есть продукт при полном непротивлении сторон.
 
Все мы тут на одно подсажены :)
Это форумы виноваты.
Страницы: 1
Читают тему (гостей: 1)
Наверх