Мой вариант (максимально оптимизировал формулу, прежний вариант оставлять не вижу смысла):
Код |
---|
=TEXTJOIN(", ";1;IFERROR(SMALL(IF(ISNA(MATCH(ROW(INDEX($A$1:$A$20000;MIN(0+LEFTB($D2;4));):INDEX($A$1:$A$20000;MAX(0+RIGHTB($D2;4));));NOT(ROW($A$1:$A$20000));0));ROW(INDEX($A$1:$A$20000;MIN(0+LEFTB($D2;4));):INDEX($A$1:$A$20000;MAX(0+RIGHTB($D2;4));)));ROW($A$1:$A$50));"")) |
Или короче, но отнюдь не лучше.
Код |
---|
=TEXTJOIN(", ";1;IFERROR(SMALL(IF(ISNA(MATCH(ROW(INDIRECT(MIN(0+LEFTB($D2;4))&":"&MAX(0+RIGHTB($D2;4))));NOT(ROW($A$1:$A$20000));0));ROW(INDIRECT(MIN(0+LEFTB($D2;4))&":"&MAX(0+RIGHTB($D2;4)))));ROW($A$1:$A$50));"")) |
Не мерял как там по производительности, но по краткости и читаемости the winner однозначно код от
Тимофеев.
Можно даже чуточку сократить, совсем будет конфетка.
Код |
---|
=TEXTJOIN(", ";1;IFERROR(1/(1/ROW($A$1:$A$2021)*(ROW($A$1:$A$2021)>=--LEFT(D2;4))*(ROW($A$1:$A$2021)<=--RIGHT(D2;4)));"")) |
З.Ы. Поскольку у меня нет TEXTJOIN воспользовался найденной в сети UDF (источник в ней же и указан).