Я знаю, как использовать BYROW(), CHOOSECOLS(), LAMBDA() и т. д. для суммирования столбцов.
например
=BYROW(CHOOSECOLS(B2:M3,1,2,3,4,5,6),LAMBDA(a,SUM(a)))
Я хотел бы суммировать столбцы, но суммируемые столбцы будут разными в каждой строке в зависимости от ячейки в этой строке.
например в строке 1 я хочу суммировать столбцы 1,2,3,4, но во второй строке я хочу суммировать 5,6,7,8,9,10,11 и 12
Я думал что-то вроде:
=BYROW(b2:m3,LAMBDA(a,SUM(CHOOSECOLS(a,TEXTSPLIT(A2,",")))))
где A2 будет 1,2,3,4, а A3 будет 5,6,7,8,9,10,11,12
Однако это не работает
Это возможно?


Просто добавьте --, чтобы преобразовать результат TEXTSPLIT в число.
=LAMBDA(csv_col_nums, range_to_sum,
BYROW(
csv_col_nums,
LAMBDA(r,
LET(
row_num, ROW(r) -
MIN(ROWS(csv_col_nums)) + 1,
SUM(
CHOOSECOLS(
INDEX(range_to_sum, row_num, ),
--TEXTSPLIT(r, ",")
)
)
)
)
)
)(A2:A3, B2:M3)
Пожалуйста, посмотрите мое обновление.
используя ваш последний снимок экрана, я бы хотел, чтобы первое число в созданном массиве было 26: 6+3+10+7 (первые 4 числа в первой строке), а второе число было 42: 7+1+3+ 4+10+7+9+1 (последние 8 цифр последней строки)
@andyleary, посмотри мой ответ, что тебе нужно сделать, установка, которую ты имеешь, делает ее более динамичной и мощной. Хорошая установка и идея. Вам понадобится TAKE() кулак для разделения и DROP() для SUM(). Базовое понимание BYROW(). при использовании BYROW() для SUM() используйте весь диапазон и делайте то же самое в пользовательских вычислениях, используя LET() или напрямую.
@andy, пожалуйста, попробуй обновление, когда у тебя будет возможность. При этом номера столбцов могут быть любыми или даже постоянными {"1,2","3,6"} (хотя количество строк должно быть одинаковым).
@MayukhBhattacharya, вы знаете, почему формулы не будут работать, если я ссылаюсь на массив, а не на диапазон: =BYROW(FILTER($a$2:$m$3,$n$2:$n$5 = "yes"),LAMBDA( α,SUM(CHOOSECOLS(DROP(α,,1),--TEXTSPLIT(TAKE(α,,1),","))))), похоже, он берет первый столбец, на который ссылаются, в каждый случай, т.е. первый и пятый соответственно
@andyleary, это другой вопрос, не могли бы вы сделать новый пост, поскольку согласно SO, в каждом посте один вопрос. Я стараюсь соблюдать правила! Но поскольку это связано, я сообщу вам как можно скорее!
@Маюх Бхаттачарья. Извините, я новичок в этом. Спасибо. я сделал
Довольно просто использовать весь диапазон в функции BYROW(), TAKE() первый столбец, а для суммы DROP() первый столбец:
=BYROW(A2:M3,LAMBDA(α,SUM(CHOOSECOLS(DROP(α,,1),--TEXTSPLIT(TAKE(α,,1),",")))))
Спасибо @nkalvi. Это, конечно, дальше, чем у меня было. Однако вторая строка рассчитывается как 23, что снова является суммой первых 4 столбцов, тогда как для этой строки мне нужна сумма последних 8 столбцов (46).