#google-sheets #google-sheets-formula
#google-таблицы #google-таблицы-формула
Вопрос:
Итак, приведенная ниже формула работает нормально, и она выполняет поиск в именованном диапазоне для нескольких ключей и подсчитывает, сколько существует каждого из них в этом именованном диапазоне, а затем умножает его на определенное значение, например:
- Именованный диапазон от B2 до E2
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | — | День 1 | День 2 | День 3 | День 4 | Итого |
2 | Янв. | F | B | F | F | 11 |
3 | Февраль | B | B | 4 |
Я просто собираюсь показать код в F2, потому что F3 такой же, только с другим диапазоном имен
INDIRECT($A2) -> This is a named range there's multiple of them
'Info'!$B$9 -> F
'Info'!$B$10 -> B
'Info'!$C$9 -> 3
'Info'!$C$10 -> 2
=SUM(
COUNTIFS(INDIRECT($A2);'Info'!$B$9)*'Info'!$C$9;
COUNTIFS(INDIRECT($A2);'Info'!$B$10)*'Info'!$C$10;
)
Что я хотел бы сделать сейчас, так это создать вторую строку (3) ниже, где я могу добавить дополнительные значения к счетчику и добавить эти значения к этому конкретному ключу выше, чтобы, например, умножение выполнялось правильно:
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | — | День 1 | День 2 | День 3 | День 4 | Итого |
2 | Янв. | F | B | F | F | 26 |
3 | JanExtra | 1 | 6 | 15 | ||
4 | Февраль | B | B | 4 | ||
5 | FebExtra | 0 |
Есть идеи о том, как я могу добиться этого с помощью приведенного выше кода? Я на самом деле застрял здесь и не имею никаких идей, заранее спасибо.
Комментарии:
1. поделитесь копией своего листа
2. Вот оно: Лист
3. как вы вычислили 15 в F3 в примере вашего вопроса?
4. Давайте подумаем в терминах часов, поэтому F всегда должно быть 3 часа, поэтому суммируйте все F и сделайте x * 3, то же самое для B, но B — всего 2 часа, числа 1 и 6 означают, что я хочу добавить еще 1 час к этой дневной смене, а 6 — то же самое, но на другой деньВ январе я работал 11 часов, если суммировать все стандартные смены, но я работал дополнительные часы в 2 разных дня, допустим, 2-й день я проработал на 6 часов больше, поэтому в строке 2 он просто выполняет 1 * 2, но теперь, поскольку я добавляю эту строку 3, а 6 ниже, я хочу добавитьэто 6 для вычисления B и то же самое для F с соответствующим значением
5. Я вижу. итак, между строкой 2 и строкой 3 происходит умножение. не должно ли быть сложение вместо умножения?
Ответ №1:
попробуйте:
=ARRAYFORMULA(IF(REGEXMATCH(A2:A; ".*Extra");
IFERROR(1*FLATTEN(SPLIT("♀♂"amp;MMULT(FILTER(B2:AF; REGEXMATCH(A2:A; ".*Extra"))*
FILTER(IFNA(VLOOKUP(B2:AF; Info!A2:B; 2; 0)); NOT(REGEXMATCH(A2:A; ".*Extra")));
TRANSPOSE(COLUMN(B:AF))^0); "♂")); 0);
MMULT(IFNA(VLOOKUP(B2:AF; Info!A2:B; 2; 0); B2:AF)*1; TRANSPOSE(COLUMN(B:AF))^0)
IFERROR(1*FLATTEN(SPLIT(MMULT(FILTER(B2:AF; REGEXMATCH(A2:A; ".*Extra"))*
FILTER(IFNA(VLOOKUP(B2:AF; Info!A2:B; 2; 0)); NOT(REGEXMATCH(A2:A; ".*Extra")));
TRANSPOSE(COLUMN(B:AF))^0)amp;"♂♀"; "♂")); 0)))