Страницы: 1
RSS
Получить все строки для массива столбцов функцией ИНДЕКС()
 
Здравствуйте. Несколько раз всплывала подобная задача (последняя тут). Необходимо получить ВСЕ строки для массива столбцов функцией ИНДЕКС.
Во всех справках написано, что
Цитата
Если задать для row_num или column_num значение 0 (ноль), ИНДЕКС возвращает массив значений для всего столбца или строки соответственно.
но мне не удалось это воспроизвести для массива столбцов.
В теме, по ссылке выше, вышел из положения указав формуле все возможные строки обернув их в ТРАНСП и присвоив ИМЯ (см.файл-пример)
Формулисты, объясните пожалуйста, в чем я не прав?
Для одного столбца, при номер_строки=0, возвращаются все строки.
П.С. Вводил и как формулу массива в старых версиях и динамический массив в новых. Все равно возвращается только одна строка.
Тематические ссылки
Как получить часть массива
Slicing an Array Without Loop – Application.Index
Согласие есть продукт при полном непротивлении сторон
 
При такой конструкции (см. спойлер) массивно введенная функция последовательно вернет столбцы и строки.
INDEX(отчет!A2:K100;0;0)


Ну а конструкция типа:
INDEX(отчет!A2:K100;{1;2;3;4;5};{1\6\3\5\7\8\11\10})

вернет нужные столбцы и первые 5 строк. Если массив {1;2;3;4;5}
заменить на ROW(1:5) то результат будет тот же самый.
Экспериментировал с Excel 2013.
 
memo, Спасибо. Такие эксперименты есть и в моем приложенном файле)
Согласие есть продукт при полном непротивлении сторон
 
Не хочу выглядеть капитаном очевидностью, но думаю, можно подытожить, что при нулевом номере строки и наличии какого-то намека на массив для столбцов, вернуть все номера строк никак не получится.
 
Цитата
написал:
при нулевом номере строки
Цитата
написал:
вернуть все номера строк
Может быть так попробовать?
Код
=ЕСЛИОШИБКА(ИНДЕКС(отчет!$A$1:$K$100;НАИМЕНЬШИЙ(ЕСЛИ((отчет!$A$1:$A$100=$A$1);СТРОКА($A$1:$A$100);"");СТРОКА($A$1:$A$100));{1;6;3;5;7;8;11;10});"")
 
Добрый день. Не формулист ни разу, но заинтересовала тема, почитал зарубежные форумы, народ пишет, что если есть какой-то намек на массив в номерах строк или столбцов, то нужно передавать тогда оба аргумента в виде массива. Мой вариант формулы для возврата всего диапазона строк:
=ИНДЕКС(отчет!A2:K100;ПОСЛЕД(СЧЁТЗ(ИНДЕКС(отчет!A2:K100;0;1)));{1;6;3;5;7;8;11;10})
Изменено: Alex - 05.12.2024 16:15:43
 
Коллеги, всем спасибо за разбор!
Я, в итоге, тоже уперся в то, что
Цитата
Alex написал:
что если есть какой-то намек на массив в номерах строк или столбцов, то нужно передавать тогда оба аргумента в виде массива.
но не 'допёр' до СТРОКА(1:50), отдельное спасибо memo
Alex, конструкция с ПОСЛЕД() тоже пригодится на будущее, спасибо
gling, спасибо за 'старую школу')
П.С. вот чего я собственно хотел)
=ИНДЕКС(ФИЛЬТР(отчет!A2:K11;отчет!A2:A11=$A$1);ПОСЛЕД(СЧЁТЗ(ФИЛЬТР(отчет!A2:A11;отчет!A2:A11=$A$1)));{1;6;3;5;7;8;11;10})
Изменено: Sanja - 06.12.2024 06:17:08
Согласие есть продукт при полном непротивлении сторон
 
Цитата
написал:
П.С. вот чего я собственно хотел)
=INDEX(отчет!A:K;FILTER(ROW(A2:A100);отчет!A2:A100=контрагент!$A$1);{1\6\3\5\7\8\11\10})
По вопросам из тем форума, личку не читаю.
 
Да БМВ, этот вариант рассматривался тоже, но с ВЫЧИСЛЕНИЕМ количества строк универсальнее. И как-то красивее, что ли)
Согласие есть продукт при полном непротивлении сторон
 
Sanja, ну красота относительное понятие. Два раза фильтровать - может накладнее выйти.
По вопросам из тем форума, личку не читаю.
 
Возможно, и скорее всего. Но при больших объемах, и строках 'с запасом' под эти объемы (например СТРОКА(A2:A1000)) возникновение ошибке 'ПЕРЕНОС' возрастает. Достаточно ввести в какую-нибудь ячейку, входящую в динамический массив, случайный пробел.
П.С. Кстати формула напрямую не работает, см.файл
Изменено: Sanja - 06.12.2024 08:33:58
Согласие есть продукт при полном непротивлении сторон
 
Цитата
написал:
П.С. Кстати формула напрямую не работает, см.файл
ну еще раз проверить смогу только дома, но у меня работала.  Про первую часть совсем не понял. Если про диапазон где строки, ну указать диапазон  исходного массива с листом.  
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
но у меня работала
да, работает. Не те разделители номеров столбцов при адаптации использовал (вместо ';' вставил ':').
Извини за поклеб)
Да и с первым утверждением поторопился) Формула рабочая, спасибо
Изменено: Sanja - 06.12.2024 08:33:40
Согласие есть продукт при полном непротивлении сторон
 
Громадное спасибо!!! Самая лучшая реализация задуманного!
Страницы: 1
Наверх