假设我有一组带数字的行。这些行中的某些列是空白的。然而,每行包含偶数个非空单元格,如下所示:
row_1: 3 4 # 7 # 3
row_2: 5 # 3 7 # 8
row_3: # # 5 # # 3
...
其中#
是一个空单元格。
我想找到一个计算以下内容的公式(以row_1为例):
= -3 + 4 + -7 + 3
换句话说,公式是计算非空白单元格的总和,其中每个奇数非空白单元格的值都有反转符号。
问题:是否可以在没有VBA的情况下使用某些excel公式?任何帮助表示赞赏。
答案 0 :(得分:1)
这是如何工作的?您需要使用辅助列。 (可能有一种方法可以跳过这个并将辅助公式与Sum()
结合起来,但我还没有:P)
放入H1的公式,向右/向下拖动是:
=IF(A1<>"",IF(MOD(COUNTA($A1:A1),2)=1,-1*A1,A1),"")
然后只需总结这些数字(上面的O列)以获得答案。
答案 1 :(得分:1)
基于A1:F1
,数组公式**
=SUM(INDEX(1:1,N(IF(1,MODE.MULT(IF(A1:F1<>{"";""},COLUMN(A1:F1))))))*-1^ROW(INDEX(A:A,1):INDEX(A:A,COUNT(A1:F1))))
向下复制,为A2:F2
,A3:F3
等中的数据提供类似的结果。
作为解释的方式,使用提供的数据,这部分:
N(IF(1,MODE.MULT(IF(A1:F1<>{"";""},COLUMN(A1:F1)))))
生成一列列索引,该列的第1行中的条目为非空白,即:
{1;2;4;6}
然后我们将这些传递给INDEX
,以便:
INDEX(1:1,N(IF(1,MODE.MULT(IF(A1:F1<>{"";""},COLUMN(A1:F1))))))
是:
INDEX(1:1,{1;2;4;6})
给出:
{3;4;7;3}
然后乘以结果:
-1^ROW(INDEX(A:A,1):INDEX(A:A,COUNT(A1:F1)))
是:
-1^ROW(A1:A4)
即:
-1^{1;2;3;4}
即:
{-1;1;-1;1}
此致
**数组公式的输入方式与“标准”公式的输入方式不同。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果你已经正确地完成了它,你会注意到Excel在公式周围放置了大括号{}(虽然不要尝试自己手动插入这些)。
答案 2 :(得分:0)
在G栏中,使用以下公式:
=CONCATENATE(A1,B1,C1,D1,E1,F1)
然后在H栏中使用这个公式:
=-MID(G1,1,1)+MID(G1,2,1)+IF(LEN(G1)>2,-MID(G1,3,1)+MID(G1,4,1),0)
假设您只有六列,其中至少有两列总是填充,并且至少有两列是空白的。如果您不符合该标准,则必须另外修改它。