【发布时间】:2019-09-20 12:17:48
【问题描述】:
我需要将 countif 公式的范围设置为不是完整行或完整列的特定单元格,例如A1、B3、D6。在命名区域中定义这些单元格并将 countif 公式应用于定义的命名区域时,不会执行计数。
【问题讨论】:
标签: excel excel-formula
我需要将 countif 公式的范围设置为不是完整行或完整列的特定单元格,例如A1、B3、D6。在命名区域中定义这些单元格并将 countif 公式应用于定义的命名区域时,不会执行计数。
【问题讨论】:
标签: excel excel-formula
这应该可以,用您的计数标准替换“X”
=SUM(COUNTIF(INDIRECT({"A1","B3","D6"}),"X"))
【讨论】:
好的,这将是一个更广泛的公式,并扩展了@Jo.lass 给出的好答案,但对于任何可能觉得它有用的人:
=SUMPRODUCT(COUNTIF(INDIRECT(TRIM(MID(SUBSTITUTE(CELL("adres",NamedRange),",",REPT(" ",100)),100*(ROW(INDIRECT("1:"&(LEN(CELL("adres",NamedRange))-LEN(SUBSTITUTE(CELL("adres",NamedRange),",",""))+1)))-1)+1,100))),"X"))
这究竟是做什么的:
它采用 NamedRange 的地址(相应地更改)并将其转换为字符串。在你的情况下"$A1$,$B$3,$D$6"。
然后我们将这个字符串分解成一个实际的引用数组,以便在INDIRECT 中使用,就像另一个答案一样。
然而,优点是,一旦公式到位,您不必回来更改实际公式中的引用,这意味着:当您的 namedRange 更改(例如)缩小/扩展时,公式将适应它相应地回答。
【讨论】:
仅供参考,我们可以切换到 SUMPRODUCT 并避免使用 Volatile INDIRECT()。
=SUMPRODUCT(--(CHOOSE({1,2,3},A1,B3,D6)=1))
易失性公式每次Excel重新计算时都会重新计算,过多会减慢excel的响应时间。
【讨论】: