У меня есть файл, показывающий продукты в одном столбце и объем каждого продукта в другом.

Я пытаюсь создать список групп товаров (CONCATENATE) на основе совокупного объема товаров. В моих исходных данных каждый продукт, показанный в столбце B, имеет объем в столбце E.

Список, который я хочу создать, начинается со строки 385, и я пронумеровал каждый элемент в столбце C. Поэтому первый элемент в списке помечен как no. «1» в ячейке C385. Результат, который я ищу, состоит в том, что как только совокупная сумма в моем столбце данных B превысит номер списка в моих результатах, я смогу CONCATENATE имена набора этих продуктов из столбца B моих исходных данных.

Например, если совокупное значение моего списка в ячейке E286 равно 4, первые 4 строки моего списка результатов должны заполниться. У меня есть рабочая формула для достижения этой цели:

=(IF(ROUND(SUM($E$283),0)>=C385,(CONCATENATE($B$281,$B$282,$B$283))," ")&(IF(ROUND(SUM($E$283:$E$284),0)>=C385,(CONCATENATE($B$281,$B$282,$B$284))," ")&IF(ROUND(SUM($E$283:$E$285),0)>=C385,(CONCATENATE($B$281,$B$282,$B$285))," ")&IF(ROUND(SUM($E$283:$E$286),0)>=C385,(CONCATENATE($B$281,$B$282,$B$286))," ")))))

По-разному отформатирован, чтобы показать вложение:

=(
    IF(
        ROUND(SUM($E$283),0)>=C385
        ,(CONCATENATE($B$281,$B$282,$B$283))
        ," ")
        &(
            IF(
                ROUND(SUM($E$283:$E$284),0)>=C385
                ,(CONCATENATE($B$281,$B$282,$B$284))
                ," ")
            &IF(
                ROUND(SUM($E$283:$E$285),0)>=C385
                ,(CONCATENATE($B$281,$B$282,$B$285))," ")
            &IF(
                ROUND(SUM($E$283:$E$286),0)>=C385
                ,(CONCATENATE($B$281,$B$282,$B$286))
                ," ")
        )
)
))

Однако, поскольку списки довольно длинные, для этого потребуется слишком много вложенных функций IF. Я слышал об использовании функций CHOOSE с логическими выражениями для достижения таких результатов. Я попытался преобразовать мою формулу в эту опцию ниже, однако я боюсь, что я не полностью понимаю эту формулу, особенно компонент «Ошибка». Может ли кто-нибудь указать, где я ошибаюсь в приведенном ниже, или даже лучше предложить альтернативное решение для достижения моей цели?

=CHOOSE(1+(ROUND(SUM($E$283),0)>=C385*1+(ROUND(SUM($E$283:$E$284),0)>=C385*2+(ROUND(SUM($E$283:$E$285),0)>=C385*3+(ROUND(SUM($E$283:$E$286),0)>=C385*4,"Error",(CONCATENATE($B$281,$B$282,$B$283)),(CONCATENATE($B$281,$B$282,$B$284)),(CONCATENATE($B$281,$B$282,$B$285)),(CONCATENATE($B$281,$B$282,$B$286)))

Альтернативный формат, показывающий вложенность:

=CHOOSE(
    1
    +(ROUND(SUM($E$283),0)>=C385*1
    +(ROUND(SUM($E$283:$E$284),0)>=C385*2
    +(ROUND(SUM($E$283:$E$285),0)>=C385*3
    +
    (
        ROUND(SUM($E$283:$E$286),0)>=C385*4
        ,"Error"
        ,(CONCATENATE($B$281,$B$282,$B$283))
        ,(CONCATENATE($B$281,$B$282,$B$284))
        ,(CONCATENATE($B$281,$B$282,$B$285))
        ,(CONCATENATE($B$281,$B$282,$B$286))
    )

0