关于excel中数组减法的建议
我需要帮助或建议如何改进以下公式:关于excel中数组减法的建议,excel,excel-formula,Excel,Excel Formula,我需要帮助或建议如何改进以下公式: =TEXT(SUMPRODUCT((B2:O2*(MOD(COLUMN(B2:O2);2)=1))-(B2:O2*(MOD(COLUMN(B2:O2);2)=0)))/(COUNTIF(B2:O2;"<>")/2);"d ""Days"", h""h"" mm""min""") =TEXT(SUMPRODUCT((B2:O2*(模数(B2:O2列);2)=1))-(B2:O2*(模数(B2:O2列);2)=0))/(COUNTIF(B2:O2;
=TEXT(SUMPRODUCT((B2:O2*(MOD(COLUMN(B2:O2);2)=1))-(B2:O2*(MOD(COLUMN(B2:O2);2)=0)))/(COUNTIF(B2:O2;"<>")/2);"d ""Days"", h""h"" mm""min""")
=TEXT(SUMPRODUCT((B2:O2*(模数(B2:O2列);2)=1))-(B2:O2*(模数(B2:O2列);2)=0))/(COUNTIF(B2:O2;“”)/2;“d”“天”,“h”“h”“mm”“分钟”)
上述公式仅适用于偶数对的情况
我的目标是得到日期之间的差异,然后得到差异的平均值。可能有未知数量的列。简化方法如下所示:
和((Z1-Y1)+(Y1-X1)+(X1-W1)+(…)+(B1-A1))/26
以下示例数据的屏幕截图:
第1行:偶数个时间条目
第2行:数字不均匀,公式失败
提前谢谢 回答:
=IF(ISEVEN(COUNT(B2:O2));TEXT(SUMPRODUCT((B2:O2*(MOD(COLUMN(B2:O2);2)=1))-(B2:O2*(MOD(COLUMN(B2:O2);2)=0)))/(COUNTIF(B2:O2;"<>")/2);"d ""Days"", h""h"" mm""min""");TEXT(SUMPRODUCT((INDIRECT("B"&(INDEX(ROW();1))&":"&ToColletter(COUNT(B2:O2))&(INDEX(ROW();1)))*(MOD(COLUMN(INDIRECT("B"&(INDEX(ROW();1))&":"&ToColletter(COUNT(B2:O2))&(INDEX(ROW();1))));2)=1))-(INDIRECT("B"&(INDEX(ROW();1))&":"&ToColletter(COUNT(B2:O2))&(INDEX(ROW();1)))*(MOD(COLUMN(INDIRECT("B"&(INDEX(ROW();1))&":"&ToColletter(COUNT(B2:O2))&(INDEX(ROW();1))));2)=0)))/((COUNTIF(B2:O2;"<>")-1)/2);"d ""Days"", h""h"" mm""min"""))
这里我有一个不同的解决方案 基本上,您可以尝试的公式如下(由于区域设置问题,您可能需要将
,
替换为;
):
正如你可以看到下面的图片,你会得到你想要的结果。这样做的目的是使用奇数列(C、E、G等)
减去偶数列(B、D、F等)
,然后取平均值。信不信由你,突出显示绿色单元格,你会发现平均数就是你想要的
但是,对于某些示例,您没有成对的列,需要忽略最后一列。这就是为什么您看到COUNTA
和COUNTIF
只是为了确定是否需要从公式中删除最后一列
另一个需要注意的是列范围。我使用OFFSET
查找由于成对列问题需要在公式中计算的范围。因此,SUMPRODUCT
内部的这四个B2:O2
被=偏移量(A2,1,IF(ISODD(COUNTA(B2:O2))、COUNTA(B2:O2)-1、COUNTA(B2:O2))
取代
以下是您可以尝试的最终公式:
=TEXT(SUMPRODUCT(ISODD(COLUMN(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2)))))*(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2))))-ISEVEN(COLUMN(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2)))))*(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2)))))/IF(ISODD(COUNTA(B2:O2)),(COUNTA(B2:O2)-1)/2,COUNTA(B2:O2)/2),"d ""Days"", h""h"" mm""min""")
让我知道这是否解决了你的问题。在你的“简单公式”中,
(Z1-Y1)+(Y1-X1)+(X1-W1)+(…)+(B1-A1)
不能被大幅简化为Z1-A1
?@Peter-Boom,数学!好主意。@BruceWayne我不知道你是不是在挖苦人haha@Peter-我不是!我经常被公式工作/不工作所困扰,我忘了退一步,我意识到我可以让它变得更简单…就像你对那个长公式的建议一样:谢谢你的评论,但是对于简单的((Z1-Y1)+(…)+(B1-A1))我需要得到每对的时差,然后我需要得到所有这些时差的平均值。所以Z1-A1不起作用。我在考虑补偿,但我的尝试没有好结果。非常感谢您对更复杂产品的帮助。嗨,谢谢!它起作用了。我对补偿法很感兴趣,所以会仔细研究。
=TEXT(SUMPRODUCT(ISODD(COLUMN(B2:O2))*(B2:O2)-ISEVEN(COLUMN(B2:O2))*(B2:O2))/IF(ISODD(COUNTA(B2:O2)),(COUNTA(B2:O2)-1)/2,COUNTA(B2:O2)/2),"d ""Days"", h""h"" mm""min""")
=TEXT(SUMPRODUCT(ISODD(COLUMN(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2)))))*(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2))))-ISEVEN(COLUMN(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2)))))*(OFFSET(A2,,1,,IF(ISODD(COUNTA(B2:O2)),COUNTA(B2:O2)-1,COUNTA(B2:O2)))))/IF(ISODD(COUNTA(B2:O2)),(COUNTA(B2:O2)-1)/2,COUNTA(B2:O2)/2),"d ""Days"", h""h"" mm""min""")