如何在单元格中使用逗号分隔的值作为公式中的参数(特别是数据透视表)?

时间:2018-08-31 16:36:20

标签: excel vba excel-formula

我有一个公式,可以从数据透视表中提取数据并根据ID进行汇总:

=SUM(GETPIVOTDATA("Value",$A$3,"AccounID",{5637855, 6839652, 5839670}))

我想使用相同的公式,但要参考:

=SUM(GETPIVOTDATA("Value",$A$3,"AccounID",A1)) 

A1为:563785568396525839670时。

在这种情况下,如果有一个ID或10个ID,它将是相同的公式,我只能在单元格A1中添加一个ID。

我确信Macro可以实现某种方式,但是我想要一种简单的方法(因为我公司中的宏受到限制)。

我发现了一些SUMPRODUCT和单元格范围的解决方法,但是这种解决方案对我而言并不实际。

2 个答案:

答案 0 :(得分:0)

使用此数组公式

=SUM(IFERROR(GETPIVOTDATA("Value",$A$3,"AccounID",TRIM(MID(SUBSTITUTE($A$1,",",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN($A$1)-LEN(SUBSTITUTE($A$1,",",""))+1))-1)*99+1,99))),0))

作为数组公式,退出编辑模式时需要使用Ctrl-Shift-Enter而不是Enter进行确认。

所有A1都是在其中找到字符串的单元格, EXCEPT 是ROW参数中的第一个。将其保留为A1,将所有其他内容更改为可以在其中找到字符串的单元格。

enter image description here

答案 1 :(得分:0)

尝试一下:

选项2:

如果某人没有单元格A1的限制`

使用您要求和的IDs创建一个表(使用格式作为表):

[criteria]
| 5637855|
| 6839652|
| 5839670|

然后在公式中用表criteria中的范围替换,例如:

=SUM(GETPIVOTDATA("Value",$D$1,"AccounID",Table1[criteria]))

并使用 Ctrl + Alt + Enter Ctrl + 将公式激活为数组Shift + 输入,具体取决于您的Excel版本。

如果在公式中突出显示Table1[criteria]并按 F9 ,您将看到它得到的值为{5637855, 6839652, 5839670}