【问题标题】:Counting number of rows above since last occurrence自上次出现以来计算上面的行数
【发布时间】:2016-12-05 21:34:00
【问题描述】:

电子表格问题。我希望能够查看单元格中的数字并在再次点击该数字之前计算出现在其上方的行数。有什么想法吗?

谢谢

【问题讨论】:

  • 一个数字 12345 出现在 row=2, column=5 中。这告诉你什么?你能澄清一下吗?
  • 我认为你不能用公式来做到这一点,你可能需要 VBA/宏来做到这一点。您可以使用 MATCH 找到数字的第一个实例,但这对您不起作用,除非您对回溯的距离有限制,并且知道它只会在最后 10 行中出现一次。
  • 我不确定你的意思。想象一下,在一周中的不同日子,我有不同的菜单项。那是 A 列。在 B 列中,我想列出自该菜单项上次出现以来的天数。所以让我们说汉堡是A1和A5。在 B5 中,我想说明自上次汉堡出现以来的行数(或天数)。这将是 4 行(天),但我想通过公式来完成。

标签: excel google-sheets formula


【解决方案1】:

这个公式是否如你所愿:

=ROW()-MAX(FILTER(ROW(INDIRECT("A1:A"&ROW()-1)),INDIRECT("A1:A"&ROW()-1)=INDIRECT("A"&ROW())))

您可以在此示例表中看到它的工作原理:

https://docs.google.com/spreadsheets/d/1CHem3Y6ptvAjNX8ug9FcPBg3g28lrTPq_-hD5UnLgpw/edit?usp=sharing

【讨论】:

  • 效果很好!你能解释一下这个公式是如何工作的吗?
  • 主要部分是一个 FILTER 公式,它返回与 B 列公式行的值匹配的 A 列(从第 1 行到公式单元格上方的行)中的单元格的行号. MAX 然后返回最高匹配的行号(即最近的实例)。然后从公式行号中减去该数字,得出两者之间的行数。当向 A 列引入新值时,我已调整工作表以使用 IFERROR 并返回“新项目”而不是 #N/A
  • @ChrisHick,我在 excel (2016) 中找不到 FILTER 公式。虽然它在谷歌电子表格中。 Excel 仅显示 FILTERXML。
  • 据我所知 FILTER 目前仅在 Google 表格中可用
【解决方案2】:

更简单的尝试

=ROW(A12) - MAX(--($A$1:A11=A12)*ROW($A$1:A11))

您需要将此公式作为数组输入,即 Ctrl+Shift+Enter

A12 是当前项

A1:A11 是过去几天的项目

--($A$1:A11=A12) 以 {0;0;1;...;0} 的数组形式为您提供与当前项目匹配的所有先前项目,即如果项目匹配,则结果为 1

ROW($A$1:A11) gives you {1;2;....} 直到最后一行

--($A$1:A11=A12)*ROW($A$1:A11) 将第二个数组中的所有数字都归零,但匹配项除外。

Max 给出最后匹配数字的索引/行

Row - Max 给你想要的结果。

Google sheet

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 2022-10-14
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2021-06-20
    • 2019-08-16
    相关资源
    最近更新 更多