我遇到过这样一种情况:用户将提供一组以逗号分隔的数字,并填写单独的查找费用列表。一旦用户输入值,单独的单元格将返回该值的总值,如下所示:
[用户输入值][增加成本的返回值]
成本查找单元
- 100美元
- 200美元
- 300美元
- 400 美元等
用户输入的示例可能是:[1,4],应返回[$500]
我目前无法读取未定义数量的逗号。可能没有不带逗号的输入,因此应该返回 $0,也可能有 200 个不同的值,这些值用逗号分隔(或像上面的例子一样用逗号和空格分隔)。
我的想法是,取逗号分隔的值,并将每个数字放入一个新单元格,然后使用 VLOOKUP 获取成本金额,并将其全部加起来得到返回值。这一切都会奏效如果我可以得到一些公式来分解出用逗号分隔的未定义数量的值。例如:
使用公式能实现这一点吗?用户除了填写查找单元格并输入所需的数字外,不需要做任何事情。
答案1
此数组公式适用于数字,CO#
如果字符串为数字,则必须--
在公式中删除。
将其放入 D2:
=IF(LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+1>=ROW($A1),INDEX(A:A,MATCH(--TRIM(MID(SUBSTITUTE($E$1,",",REPT( " ",99)),(ROW($A1)-1)*99+1,99)),$A:$A,0)),IF(ROW($A1)=LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+2,IF(COLUMN(A$1) = 1, "$",SUM(INDEX($B:$B,MATCH(N(IF(1,--TRIM(MID(SUBSTITUTE($E$1,",",REPT( " ",99)),(ROW(INDEX($AAB:$AAB,1):INDEX($AAB:$AAB,LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+1))-1)*99+1,99)))),$A:$A,0)))),""))
使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。然后复制一列并向下复制足以处理所有需要的行。
根据列表中的位置,各种 IF 语句会拆分字符串并返回 MATCH 中的一个或所有部分,而 MATCH 又会返回 INDEX 的全部或其中一个相对位置。然后,它会将所有部分相加或返回正确的单个值。
它将根据需要自动调整大小。