如何找到下一个具有值的单元格并获取日期差异

如何找到下一个具有值的单元格并获取日期差异

我有 5 列。我需要找出第二列中相同类型的值之间的时间(以天为单位)。最后一列已经计算了每个日期之间的时间差。它通过将单元格当前单元格的日期减去前一个单元格的日期来实现。例如:距离上次事件已经过去 1 天

我正在尝试弄清楚如何做到这一点:第 3 列将查找包含“s”的第 2 列之间的时间差。第 4 列将查找所有其他字母之间的时间差。

示例数据:

示例数据

答案1

首先在数据上方的第 1 行添加一个标题行,然后从第 2 行开始显示数据。

在单元格 C2 中输入以下公式:

=IFERROR(IF(B2="s",A2-INDIRECT("A"&LOOKUP(2,1/($B$1:$B1="s"),ROW($B$1:$B1))),"-"),"n/a")

在单元格 D2 中输入以下公式:

=IFERROR(IF(B2<>"s",A2-INDIRECT("A"&LOOKUP(2,1/($B$1:$B1<>"s"),ROW($B$1:$B1))),"-"),"n/a")

将每个公式填入所有行。您将得到以下结果:

“S” 和“非 S” 日期计算图像

解释

C 列公式的工作原理是,首先检查 B 列是否 =“s”,然后向上搜索 ( lookup) B 列中“s”的上一个实例,然后使用该实例的行号 ( indirect) 引用与其相关的日期,并执行日期求和。D 列公式执行相同的操作,但匹配任何内容以外“s”。

列 C 中第一次出现的“s”和列 D 中第一次出现的“非 S”将导致错误(因为没有先前的数据),因此公式被函数包围iferror,这些函数将 #N/A 错误结果更改为更清晰的 n/a 字符串(单元格 C4 和 D2)。

如果你的数据不是从左上角开始

如果你的数据不是从第 2 行开始,仍然将上述公式粘贴到我说的位置,然后将它们复制并粘贴到工作表上应该出现的位置,并且大部分引用将相应更新 - 您只需更改 的实例$1:以匹配标题行(例如,如果您的标题行是 25,则 的实例$1:将变为$25:)。如果您的数据不是从 A 列开始,那么您将需要在公式中手动更改相应的列字母。例如,如果您的数据从 F 列开始,则将 的每个实例更改为A,将F的每个实例更改BG

答案2

我知道这不是应该这样做的确切方式,但我通常会尝试使用更多列来帮助我解决此类任务。在其中一个列中,我让 excel 列出我在其他地方输入的值的日期(不确定你的任务是什么,但对我来说它可能是项目的 ID)。然后在附加列中,很容易计算它们之间的差异。我知道你可以写脚本或类似的东西,但如果你可以接受肮脏的解决方案,这个也可以……

我将使用另一列带有 IF 函数,如果 ID 与我所需的值匹配,则让它写入日期列的值。这样您将获得空单元格或日期。然后应该很容易使用另一列计算自上一个非空单元格以来的天数。

希望这可以帮助...

相关内容