【问题标题】:logic for a simple way to know which column to sum一种简单的方法来知道要对哪一列求和的逻辑
【发布时间】:2021-11-18 12:04:36
【问题描述】:

我正在使用 google 表格查看一些 gps 速度和距离数据,我想总结超过 75% 最大速度的所有距离。 D 列具有最大速度的 75%。 Q-X 列的距离为 2 m/s、3 m/s、4m/s 等。除了执行大量嵌套的 if 语句之外,还有更简单的方法吗?

否则我认为它看起来像: =if(d3>9,sum(q3:x3),if(d4>8,(sum(q3:w3),if(d4>7,(sum(q3:v3),if(d4>6,(sum (q3:u3),if(d4>50,(sum(q3:t3),if(d4>40,(sum(q3:s3),if(d4>30,(sum(q3:r3),if( d4>20,q3,0)))))))

这是数据的链接:https://docs.google.com/spreadsheets/d/1eRCv4paCEAAufegmzbPCchIErteA-CYYmXp5lNizpO0/edit?usp=sharing

我还需要能够匹配名称列 A 和 D1 中的日期。

好像应该有更简单的方法,但我不知道该怎么做。

【问题讨论】:

  • 分享您的工作表副本/样本
  • 刚刚做了这个,抱歉我没有在最初的问题中

标签: sorting google-sheets sum google-sheets-formula vlookup


【解决方案1】:

B4:

=INDEX(SORTN(SORT({data!F2:F, data!A2:A}, data!F2:F, 0), 9^9, 2, 2, 1),,1)

C4:

=INDEX(SORTN(SORT({(data!F2:F*0.75), data!A2:A}, data!F2:F, 0), 9^9, 2, 2, 1),,1)

D4:

=INDEX(SORTN(SORT({(data!F2:F*0.75)/2.237, data!A2:A}, data!F2:F, 0), 9^9, 2, 2, 1),,1)

E4 始终名列前茅:

=ARRAYFORMULA(IF(A4:A="",,MMULT(IFERROR(VLOOKUP(A4:A, 
 SORTN(SORT({data!A2:A, data!Q2:X}, data!F2:F, 0), 9^9, 2, 1, 1), 
 IF(INDEX(SORTN(SORT({(data!F2:F*0.75)/2.237, data!A2:A}, data!F2:F, 0), 9^9, 2, 2, 1),,1)>
 SEQUENCE(1, 8)+1, SEQUENCE(1, 8)+1, 0), 0), 0), SEQUENCE(8)^0)))

或 E4 选择顶部的日期:

=ARRAYFORMULA(IF(A4:A="",,MMULT(IFERROR(VLOOKUP(A4:A, 
 SORTN(SORT(FILTER({data!A2:A, data!Q2:X}, data!B2:B=TEXT(D1, "mm/dd/yyyy")), 
 FILTER(data!F2:F, data!B2:B=TEXT(D1, "mm/dd/yyyy")), 0), 9^9, 2, 1, 1), 
 IF(INDEX(SORTN(SORT({(data!F2:F*0.75)/2.237, data!A2:A}, data!F2:F, 0), 9^9, 2, 2, 1),,1)>
 SEQUENCE(1, 8)+1, SEQUENCE(1, 8)+1, 0), 0), 0), SEQUENCE(8)^0)))

demo sheet

【讨论】:

  • 这行得通!正是我想要做的。我试图理解它,但我被困住了。能不能给新手解释一下。谢谢@@
  • @JeromeLearman 当然。见:docs.google.com/spreadsheets/d/…
【解决方案2】:

您问题的第一部分应该只是一个 sumif(尽管您必须从数据表的标题中提取数字):

=ArrayFormula(sumif(--regexextract(data!Q1:W1,"\d"),"<"&D4,data!Q2:W2))

您可以使用索引/匹配从数据选项卡中获取正确的行(此处使用 sumifs 演示):

=ArrayFormula(sumifs(index(data!Q2:W,match(A4&$D$1,data!A2:A&data!B2:B,0),0),--regexextract(data!Q1:W1,"\d"),"<"&D4))

【讨论】:

  • 我喜欢你这样做的方式,因为它简短而简单。我对 ArrayFormulas 一无所知。我可以将 sumif 更改为 sumifs。当我尝试添加逻辑来查找名称和数据时,出现错误。 =sumifs(--regexextract(data!Q1:W1,"\d"),"
  • 您可以使用 sumifs 代替 sumif,但这无济于事,因为您只能将其应用于单行,如 Q1:w1 或 Q2:w2 以匹配现有范围 - 如果您尝试一下就像您建议的那样,您会收到“不同大小的数组”错误。你必须找到一种选择你想要的行的方法——我会使用索引/匹配。我会将其添加到我的答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多