带有布尔表达式的 CHOOSE 函数与过多嵌套的 IF 函数

带有布尔表达式的 CHOOSE 函数与过多嵌套的 IF 函数

我有一个文件,其中一列显示产品,另一列显示每种产品的数量。

CONCATENATE我正在尝试根据产品的累计数量创建产品分组列表 ( )。在我的源数据中,每种产品都显示在 B 列中,而 E 列中则显示其数量。

我想要创建的列表从第 385 行开始,我已经在 C 列中对每个项目进行了编号。因此,列表中的第一个项目在单元格 C385 中标记为“1”。我想要的结果是,一旦我的数据列 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))
    )

相关内容