Я хочу превратить (уникальную) функцию в формулу, которая работает следующим образом...
=N25:N29+O25:O29+P25:P29+Q25:Q29+R25:R29


Это был пример суммирования нескольких значений в формуле, которая делает это для 5 строк одновременно по отдельности. (оно распространяется на другие строки)
Я могу сделать простую версию (уникальной) функции, которая работает для одной строки, вот так...
=UNIQUE(N38:R38,TRUE,TRUE)


я могу (скопировать/вставить) функцию для других строк, но я не хочу, чтобы это было так, мне нужна формула, которая делает это для нескольких строк одновременно отдельно, как суммирование, которое я сделал в первом примере. (я хочу, чтобы это перекинуться на другие строки)
кто-нибудь знает, как это сделать?
Я пробовал так, но не получилось...
=UNIQUE(N32:N36&O32:O36&P32:P36&Q32:Q36&R32:R36,TRUE,TRUE)




Возможно, вы имеете в виду что-то в этом роде:
Формула в H3:
=IFNA(DROP(LET(α,B3:F7,REDUCE(0,SEQUENCE(ROWS(α)),LAMBDA(β,γ,VSTACK(β,IFERROR(UNIQUE(TOROW(INDEX(α,γ,0),1),1,1),""))))),1),"")
Примечание. Теперь вы удалили значения, которые появлялись в исходных строках более одного раза в соответствии с вашей собственной попыткой с помощью UNIQUE(arr,1,1).
То же самое можно было бы сделать, используя MAKEARRAY:
=LET(range,A2:E6,MAKEARRAY(ROWS(range),COLUMNS(range),LAMBDA(r,c,LET(i,INDEX(range,r,), IFERROR(INDEX(UNIQUE(FILTER(i,i<>""),1,1),c),"")))))
Где мы сначала объявляем range и создаем массив того же размера.
Затем с помощью i мы перебираем диапазон по строкам.
Мы фильтруем значения строк, удаляя пробелы, и применяем УНИКАЛЬНУЮ формулу, которую вы задумали. Мы индексируем результат, чтобы вернуть одно значение из вычисленных уникальных значений (позиция c).
Если позиция выходит за пределы ссылки на вычисляемый массив, будет возвращена #REF-ошибка. Мы превращаем их в пробелы, используя ЕСЛИОШИБКА.
Вот еще одна альтернатива с использованием функций REDUCE():
• Формула, используемая в ячейке H2
=LET(
α, B3:F7,
δ, IFNA(REDUCE(B2:F2,SEQUENCE(COLUMNS(α)),LAMBDA(r,c,
VSTACK(r,UNIQUE(CHOOSEROWS(α,c),1,1)))),""),
IF(δ=0,"",δ))
Вместо INDEX() можно также использовать CHOOSEROWS().
=LET(
α, B3:F7,
δ, IFNA(REDUCE(B2:F2,SEQUENCE(COLUMNS(α)),LAMBDA(r,c,
VSTACK(r,UNIQUE(INDEX(α,c,),1,1)))),""),
IF(δ=0,"",δ))
Та же основная логика, что и у JvdV и Маюха, немного многословная:
=LAMBDA(data,
LET(
num_cols, COLUMNS(data),
once_only, LAMBDA(values,
LET(
values_wo_blanks, TOROW(values, 1),
IFERROR(UNIQUE(values_wo_blanks, TRUE, TRUE), "")
)
),
REDUCE(
CHOOSEROWS(data, 1),
SEQUENCE(ROWS(data)),
LAMBDA(acc_rows, cur_row,
IF(
cur_row = 1,
acc_rows,
VSTACK(
acc_rows,
EXPAND(
once_only(CHOOSEROWS(data, cur_row)),
,
num_cols,
""
)
)
)
)
)
)
)(B2:F7)