我有几个单元格可以从多个工作表的单个单元格中计算总计,在这种情况下,是从Week中每个工作表中得出“ Y3”,其中n是1到10之间的整数:
=SUMPRODUCT(COUNTIF(INDIRECT("'Week"&{1,2,3,4,5,6,7,8,9,10}&"'!Y3"),"W"))
我想在我的工作簿中有一个单元格,其中包含A1:
1,2,3,4,5,6,7,9,10
这样,当我添加要计数的工作表时,我只能更新一个单元格。我尝试了几件事,但似乎没有任何效果。
答案 0 :(得分:2)
您的公式:=SUMPRODUCT(COUNTIF(INDIRECT("'Week"&{1,2,3,4,5,6,7,8,9,10}&"'!Y3"),"W"))
仅当您有10个名为Week1,Week2,Week3….Week10的工作表时,此公式才起作用
但是如果少于10张,例如Week1,Week2,Week3….Week9,您的公式将失败并返回"#REF!"
错误
公式变通方法用IFERROR()包装并变成:
=SUMPRODUCT(IFERROR(COUNTIF(INDIRECT("'Week"&{1,2,3,4,5,6,7,8,9,10}&"'!Y3"),"W"),0))
但是,如果您希望公式具有动态效果,请在A1
中输入:1,2,3,4,5,6,7,9,10
但是1,2,3,4,5,6,7,9,10
是一个文本字符串,您需要将其转换为数组。使用FILTERXML()
可以完成自Excel 2013起可用的工作
这是您需要通过按CTRL + SHIFT + ENTER而不是ENTER确认的数组公式:
=SUM(IFERROR(COUNTIF(INDIRECT("'Week"&FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b")&"'!Y3"),"W"),0))
编辑1:
然后
如果您还没有Excel 2013,则可以改用此较长数组(CSE)公式
=SUM(IFERROR(COUNTIF(INDIRECT("'Week"&TRIM(MID(SUBSTITUTE(","&A1,",",REPT(" ",99)),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",))+1))*99,99))&"'!Y3"),"W"),0))
之后,
您可以调整A1
号而无需更改公式内容
答案 1 :(得分:1)
AFAIK,如果将工作表列表放在单个单元格中,则无法使用公式进行操作我的立场是正确的:请参阅bosco_yip的答案! (尽管您可以使用UDF)。
但是,如果将工作表列表放在一列中,则可以执行此操作(使用OFFSET,该列表是动态的,但必须是该列中的唯一数据。如果不合适,则有其他选择):
[Serializable]
public class GameData : MonoBehavior
{
public float Health { get; set; }
}
应用FILTERXML方法创建一个非数组公式
=SUMPRODUCT(COUNTIF(INDIRECT("'Week"&TRANSPOSE(OFFSET(A1,1,0,COUNTA(A:A)-1,1))&"'!Y3"),"W"))