Я пытаюсь найти оптимальный вариант передачи в формулу
Код
=ИНДЕКС(Таблица;2;Ч(ТРАНСП(СТРОКА(2:4))))
параметра извне. В принципе можно обойтись традиционным способом при помощи функции ДВССЫЛ(индекс_начала&":"&индекс_конца;1), но если получится хранить индексы в виде текстовой строки, а затем преобразовать ее вектор, то можно будет отказаться от всей связки функций Ч(ТРАНСП(СТРОКА(ДВССЫЛ(...
Формальная задача: ТРЕБУЕТСЯ получить массив {11;21;31} из второй строки ТАБЛИЦЫ опираясь на ДВА числовых параметра, записанных в ячейках C36:D36, или на ЕДИНЫЙ текстовый параметр, записанный в ячейке D40…
Традиционный не менее, но менее летучий =INDEX(Таблица;2;N(TRANSPOSE(ROW(INDEX($A:$A;$C$36):INDEX($A:$A;$D$36))))) или =INDEX(Таблица;2;N(COLUMN(INDEX($1:$1;$C$36):INDEX($1:$1;$D$36))))
Только название темы наверно лучше придумать, хотя если именно в исходных текст и нужно его использовать , то ок. тогда ответ =TRANSPOSE(trim(MID(SUBSTITUTE(";"&SUBSTITUTE(REPLACE(D40;1;1;);"}";"");";";REPT(" ";LEN(D40)));ROW(A1:INDEX(A:A;LEN(D40)-LEN(SUBSTITUTE(D40;";";""))+1))*LEN(D40);LEN(D40)))) сокращенный вариант с жесткими цифирками 99 =INDEX(Таблица;2;TRANSPOSE(--MID(SUBSTITUTE(";"&SUBSTITUTE(REPLACE(D40;1;1;);"}";"");";";REPT(" ";99));ROW(A1:A99)*99;99)))
Или через INDIRECT =INDEX(Таблица;2;TRANSPOSE(ROW(INDIRECT(SUBSTITUTE(MID(D40;2;FIND(";";D40)-2)&":"&TRIM(RIGHT(SUBSTITUTE(D40;";";REPT(" ";99));99));"}";)))))
В прошлой теме, я говорил о необходимости еще одного индекс. Это онтносилось к варианту, когда нужно получить массив для дальнейшей обработки в одной ячейке. Если вывод в несколько с использованием массивной формулы, то да, можно опустить.
Если все-равно конвертация текста в вектор производится через определение начала и конце диапазона (чисел), то предлагаю остановиться на первых двух формулах. А название темы поправить на "Формирование массива последовательных чисел"
Про второй ИНДЕКС: проверю понадобится ли он в моих дальнейших упражнениях и отпишусь