Так что я понял, это было сделано по этой формуле. Я заменю переменные с их объяснением. Это долго, но на самом деле это довольно легко. Пожалуйста, игнорируйте чешские версии функций, KDYŽ
знак равно IF
, ŘÁDEK
знак равно ROW
а также ŘÁDKY
знак равно ROWS
,
IFERROR(INDEX(Prima;SMALL(KDYŽ(A$1=Prima[Blok 1];ŘÁDEK(Prima[Blok 1])-3);ŘÁDKY(A$3:A3));1);
IFERROR(INDEX(Sekunda;SMALL(KDYŽ(A$1=Sekunda[Blok 1];ŘÁDEK(Sekunda[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1));1);
IFERROR(INDEX(TercieA;SMALL(KDYŽ(A$1=TercieA[Blok 1];ŘÁDEK(TercieA[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1));1);
IFERROR(INDEX(TercieB;SMALL(KDYŽ(A$1=TercieB[Blok 1];ŘÁDEK(TercieB[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1)-COUNTIF(TercieA[Blok 1];A$1));1);
IFERROR(INDEX(Kvarta;SMALL(KDYŽ(A$1=Kvarta[Blok 1];ŘÁDEK(Kvarta[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1)-COUNTIF(TercieA[Blok 1];A$1)-COUNTIF(TercieB[Blok 1];A$1));1);
IFERROR(INDEX(KvintaA;SMALL(KDYŽ(A$1=KvintaA[Blok 1];ŘÁDEK(KvintaA[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1)-COUNTIF(TercieA[Blok 1];A$1)-COUNTIF(TercieB[Blok 1];A$1)-COUNTIF(Kvarta[Blok 1];A$1));1);
IFERROR(INDEX(KvintaB;SMALL(KDYŽ(A$1=KvintaB[Blok 1];ŘÁDEK(KvintaB[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1)-COUNTIF(TercieA[Blok 1];A$1)-COUNTIF(TercieB[Blok 1];A$1)-COUNTIF(Kvarta[Blok 1];A$1)-COUNTIF(KvintaA[Blok 1];A$1));1);
IFERROR(INDEX(Sexta;SMALL(KDYŽ(A$1=Sexta[Blok 1];ŘÁDEK(Sexta[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1)-COUNTIF(TercieA[Blok 1];A$1)-COUNTIF(TercieB[Blok 1];A$1)-COUNTIF(Kvarta[Blok 1];A$1)-COUNTIF(KvintaA[Blok 1];A$1)-COUNTIF(KvintaB[Blok 1];A$1));1);
IFERROR(INDEX(Septima;SMALL(KDYŽ(A$1=Septima[Blok 1];ŘÁDEK(Septima[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1)-COUNTIF(TercieA[Blok 1];A$1)-COUNTIF(TercieB[Blok 1];A$1)-COUNTIF(Kvarta[Blok 1];A$1)-COUNTIF(KvintaA[Blok 1];A$1)-COUNTIF(KvintaB[Blok 1];A$1)-COUNTIF(Sexta[Blok 1];A$1));1);
IFERROR(INDEX(Oktáva;SMALL(KDYŽ(A$1=Oktáva[Blok 1];ŘÁDEK(Oktáva[Blok 1])-3);ŘÁDKY(A$3:A3)-COUNTIF(Prima[Blok 1];A$1)-COUNTIF(Sekunda[Blok 1];A$1)-COUNTIF(TercieA[Blok 1];A$1)-COUNTIF(TercieB[Blok 1];A$1)-COUNTIF(Kvarta[Blok 1];A$1)-COUNTIF(KvintaA[Blok 1];A$1)-COUNTIF(KvintaB[Blok 1];A$1)-COUNTIF(Sexta[Blok 1];A$1)-COUNTIF(Septima[Blok 1];A$1));1);""
))))))))))
Основная часть повторяется там несколько раз, в качестве альтернативного текста для IFERROR()
функция:
IFERROR(
INDEX(
<table range>;
SMALL(
IF(
<value to find>=<range in table to look in>;
ROW(<range in table to look in>)-<number of rows above the first row of the table>
);
ROWS(<first-cell-in-results-column-to-this-cell range>) <note here>
);
<column number (starting from 1) with the return value>
);
<alternative for IFERROR>
)
Приведенная выше формула будет, если значения установлены правильно, вернет все значения из столбца возврата, если в диапазоне поиска найдено правильное значение. Теперь, если вам нужно выполнить то, что мне нужно, то есть получить значения из нескольких таблиц в один список, вам нужно установить эту формулу в качестве альтернативы для IFERROR
один раз для каждой исходной таблицы.
Это хорошо, но это не единственное, что нам нужно сделать. Эта формула работает путем внутреннего создания массива возвращаемых значений внутри каждой ячейки списка и последующего выбора N-го наименьшего индекса ( INDEX
функция), где N задается ROWS
функция внутри INDEX
, Так что, если мы не сделаем следующее, то при переходе к следующей таблице попытаемся снова выбрать N-й индекс, однако в предыдущих таблицах уже есть некоторые значения. Нам нужно вычесть количество предметов, уже присутствующих в таблице, используя COUNTIF
функция. Поэтому после того, как мы добавим вторую итерацию нашей формулы, все будет выглядеть так:
IFERROR(
INDEX(
<table range>;
SMALL(
IF(
<value to find>=<range in table to look in>;
ROW(<range in table to look in>)-<number of rows above the first row of the table>
);
ROWS(<first-cell-in-results-column-to-this-cell range>)
);
<column number (starting from 1) with the return value>
);
IFERROR(
INDEX(
<table 2 range>;
SMALL(
IF(
<value to find>=<range in table 2 to look in>;
ROW(<range in table 2 to look in>)-<number of rows above the first row of the table 2>
);
ROWS(<first-cell-in-results-column-to-this-cell range>)
-COUNTIF(<range in table 2 to look in>; <value to find>)
);
<column number (starting from 1) with the return value>
);
<another iteration or something else>
)
)
И с каждой новой итерацией внутри следующего IFERROR
мы должны добавить еще -COUNTIF
функционировать и сохранить предыдущие. Затем, когда все настроено, вы можете просто перетащить свою формулу на доску и создать списки, сколько захотите!
Я действительно надеюсь, что это кому-то поможет, если вы можете оставить комментарий :) Я потратил некоторое время на эту формулу и выяснил, как все работает, поэтому, если я сэкономил вам время, я был бы рад помочь! :)