我需要帮助或建议如何改进以下公式:
=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""")
以上公式仅在偶数对时才有效。
我的目标是在日期之间获得差异,然后获得该差异的平均值。可能有未知数量的列。简化方法如下所示:
萨姆((Z1-Y1)+(Y1-X1)+(X1-W1)+(...)+(B1-A1))/ 26
以下示例数据的屏幕截图:
第1行:偶数个条目
第2行:数字不均匀且公式失败
提前致谢!
答案 0 :(得分:1)
在这里,我有一个不同的解决方案。
基本上您可以尝试使用的公式(由于区域设置问题,您可能需要将,
替换为;
):
=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""")
正如您可以看到下面的图片,您将获得所需的结果。这样做是使用odd columns (C, E, G etc.)
减去even columns (B, D, F etc.)
然后取平均值。信不信由你,突出绿色细胞,你应该找出你正在寻找的平均数字。
但是,对于某些示例,您没有配对列,并且需要忽略最后一列。这就是为什么你看到COUNTA
和COUNTIF
只是为了确定是否需要从公式中删除最后一列。
需要注意的另一件事是列范围。由于配对列问题,我使用OFFSET
来查找公式中需要评估的范围。因此,B2:O2's
内的SUMPRODUCT
内的=OFFSET(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""")
取代。
您可以尝试以下最终公式:
"lessons": {
"lessonKey1": {
"title": "rocks and dirt",
"description": "introductory....",
"class": "Remedial classes",
}
如果这可以解决您的问题,请告诉我。
答案 1 :(得分:0)
答案:
=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"""))
帮助功能:
Public Function ToColletter(Collet)
ToColletter = Split(Cells(1, Collet).Address, "$")(1)
End Function