【问题标题】:Calculate number of days based on criteria根据标准计算天数
【发布时间】:2015-10-07 22:46:14
【问题描述】:

我需要计算迁徙动物种群的占用时间。入住率被定义为在给定年份中第一次和最后一次看到个人之间的时间段,以天为单位。我在 Excel 中处理的目击数据类型的一个小例子:

我需要能够计算一年内两次目击之间的天数,而不是第一次和最后一次目击之间或每次目击之间的天数。我想知道是否有办法使用 DATEDIF 和 IF 语句来做到这一点。

编辑:我正在重新审视这个分析,作为一个具体问题,如图所示。为了使我的数据正确,如果在给定的一年中只看到过一次动物,则公式需要返回“1”,如果根本没有看到则返回“0”。就目前而言,如果该公式被看到一次或根本没有看到,则返回“0”。

【问题讨论】:

  • 请进一步解释:I need to be able to calculate the number of days between sightings within a year and not between the first and last sightings or between each sighting.
  • 请展示正确输出的样例。
  • 我希望能够确定动物在给定年份中停留在该地区的平均天数。查看我包含的示例数据中的示例:2005 年 11 个人的目击间隔为 0 天(因为只看到一次),2007 年第一次和最后一次目击之间有 6 天,2010 年为 0。个人 37 的目击间隔为 12 天2000 年和 2001 年 9 天。这有助于澄清吗?
  • 是的。没错。
  • 糟糕。我很抱歉。我把那个人的七月误认为六月。正确的数字是 40 天。

标签: excel date if-statement


【解决方案1】:

有一种方法可以通过公式来做到这一点,但我真的不推荐!

使用“max(if(”和“min(if(”(一种使用起来非常棘手的公式形式 - 输入时必须按 [ctrl][shift][enter]),如下所示:

在单元格 K2 中使用以下公式:

=DATE(YEAR(MIN($B$2:$J$2)),1,1)

这为您的目击设置了最早的年份

在单元格 L2 中,编辑单元格,粘贴以下行,然后按 [ctrl][shift][enter]:

=IF(N(K2)=0,"",MAX(MAX(IF($B$2:$J$2<DATE(YEAR(K2)+1,1,1)-1,$B$2:$J$2))-MIN(IF($B$2:$J$2>=K2,$B$2:$J$2)),0))

您应该会看到“{”“}”围绕公式文本。如果您不这样做并获得#VALUE,请重试!

在 M2 单元格中粘贴以下公式:

=IF(N(K2)=0,"",IF(MAX($B$2:$J$2)>DATE(YEAR(K2)+1,1,1),DATE(YEAR(K2)+1,1,1),""))

将 K2 和 M2 格式化为自定义“yyyy”以显示年份。

现在复制范围 L2:M2 并根据需要粘贴到 N2、P2、R2 和右侧的每隔一个单元格。

您最终应该得到成对的单元格,显示年份,以及该年第一次和最后一次目击之间的天数,从数据集中最早的一年到最后一年的每一年。

【讨论】:

  • 谢谢康纳。但是你为什么不推荐这种方法呢?
  • 太丑了!这些“数组公式”在标准 Excel 文档中没有突出显示,也很少使用。 IF(..) 结构对大多数 Excel 用户来说都很奇怪。他们很困惑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 2017-07-29
  • 1970-01-01
  • 2013-10-04
相关资源
最近更新 更多