将Excel数组函数嵌套在非数组函数中并返回数组

时间:2019-07-15 19:40:41

标签: arrays excel-formula nested

我正在尝试创建一个电子表格,该电子表格将用于向客户提供报价。一些零件编号适用于单个项目。某些部件号是最多4件的捆绑包。我正在尝试创建一个公式,以返回与给定部件号关联的所有值。

最初,我在报价单中有两部分-一部分使用VLOOKUP返回带有单个项目的部件号,另一部分使用返回数组的项目的数组公式。

第一个公式是

=IF(ISNA(VLOOKUP(B12,PriceList,2,FALSE)),"",VLOOKUP(B12,PriceList,2,FALSE))

第二个是

{=IFERROR(INDEX(Bundles!$B$2:$B$101, SMALL(IF($B$33=Bundles!$A$2:$A$101, ROW(Bundles!$B$2:$B$101 ) - 1,""), ROW() - 32 )),"")}

Screenshot showing results of first two formulas

两者都能正常工作。他们依靠两个数据表“ PriceList”和“ Bundles”

我希望销售代表能够在B列中输入零件编号,并获得正确的零件描述-无论是1、2、3还是4项,以显示在C列中。我希望他们能够能够在同一报价上输入多个零件号。

我试图以此为基础编号

=IF(LEFT(B29,4)="BUND",IFERROR(INDEX(Bundles!$B$2:$B$101,SMALL(IF($B$29=Bundles!$A$2:$A$101,ROW(Bundles!$B$2:$B$101)-1,""),ROW()-28)),""),VLOOKUP(B29,PriceList,2,FALSE))}

这适用于捆绑商品,但重复单个商品。

我想拥有一个数据源(PriceList)和一个公式。

Partnumbers in Datasource

我现在想做的是使用COUNTIF。例如,如果COUNTIF返回大于1,则使用数组公式,否则使用VLOOKUP公式。

我把它想象成类似

IF((COUNTIF(PriceList,Quote!B11)>1),"BUNDLE",IF(ISNA(VLOOKUP(Quote!B11,PriceList,2,FALSE)),"",VLOOKUP(Quote!B11,PriceList,2,FALSE)))

其中“ BUNDLE”由数组函数代替。我似乎无法提出正确的数组公式。

我尝试过

{=IF((COUNTIF(PriceList,Quote!B11)>1),IFERROR(INDEX(Bundles!$B$2:$B$101, SMALL(IF($B$11=Bundles!$A$2:$A$101, ROW(Bundles!$B$2:$B$101 ) - 1,""), ROW() - 32 )),""),IF(ISNA(VLOOKUP(Quote!B11,PriceList,2,FALSE)),"",VLOOKUP(Quote!B11,PriceList,2,FALSE)))}

对于单个项目,这将返回同一项目的四行,对于捆绑商品,则不会返回

我曾考虑过将数组函数放在另一个单元格中,并引用该单元格,但是如果捆绑包包含多个项目,这将无济于事。

任何想法或建议都将受到欢迎。

0 个答案:

没有答案