Я хочу вычислить сумму (столбца Сумма в диапазоне U3:U8
) по дате (столбец Дата в диапазоне S3:S8
) в диапазоне от "1.4.18" до "31.3.19" только Амана, Делла и Ивана (столбец Описание в диапазоне T3:T8
.
решение1
Если у вас есть Microsoft 365, вот одна формула, которая вам подойдет:
=SUM(
FILTER(
$C$3:$C$8,
BYROW(
$B$3:$B$8,
LAMBDA(arr,
OR(ISNUMBER(SEARCH(TEXTSPLIT(B12, ","), arr)))
)
) * ($A$3:$A$8 >= $A$12) * ($A$3:$A$8 <= A13)
)
)
Это можно сделать и в более ранних версиях, но это немного сложнее.
Сначала создайте дваИменованные формулы:
numWords Refers To: =LEN(Sheet9!$B$12)-LEN(SUBSTITUTE(Sheet9!$B$12,",",""))+1
seq Refers To: =ROW(INDEX(Sheet9!$A:$A,1):INDEX(Sheet9!$A:$A,numWords))
Затем вы можете использовать эту формулу:
=SUM(
MMULT(
ISNUMBER(
SEARCH(
TRANSPOSE(
TRIM(
MID(
SUBSTITUTE(
$B$12,
",",
REPT(" ", 99)
),
IF(seq = 1, 1, (seq - 1) * 99),
99
)
)
),
$B$3:$B$8
)
) * ($A$3:$A$8 >= $A$12) * ($A$3:$A$8 <= $A$13),
seq ^ 0
) * $C$3:$C$8
)
Во второй формуле:
numWords
количество слов в ячейке «Содержит слова»
seq
возвращает массив чисел, равный numWords (например: {1,2,3}
)
MMULT
используется для преобразования массивов допустимых поисков в один столбец значений (например, аналогично BYROW
в первой формуле).
Чтобы разделить текстовую строку по запятым:(замена TEXTSPLIT
функции
TRIM(
MID(
SUBSTITUTE(
$B$12,
",",
REPT(" ", 99)
),
IF(seq = 1, 1, (seq - 1) * 99),
99
)