我更好地告诉你。这是我的名单看起来像:Excel - 自动生成日期列表,给出多个日期范围在一列
而且这是我希望它是:
基本上,在第一张照片我有不同的日期范围,每个日期范围我有这两个指标,会话和用户,最终结果应该是将所有日期范围扩大为单个日期,考虑到某些日期可以包含在多个日期范围内(例如日期2017-08- 12)包含在第一行和第二行中。最后但并非最不重要的是,结束日期不应该被计算在内。
有人可以帮我吗?
万分感谢
A.
我更好地告诉你。这是我的名单看起来像:Excel - 自动生成日期列表,给出多个日期范围在一列
而且这是我希望它是:
基本上,在第一张照片我有不同的日期范围,每个日期范围我有这两个指标,会话和用户,最终结果应该是将所有日期范围扩大为单个日期,考虑到某些日期可以包含在多个日期范围内(例如日期2017-08- 12)包含在第一行和第二行中。最后但并非最不重要的是,结束日期不应该被计算在内。
有人可以帮我吗?
万分感谢
A.
这是一个解决方案的概要:
LEFT
,RIGHT
和MID
)来提取年,月和日值的数字。这些仍然是字符串,所以使用VALUE
函数将它们转换为实际的数字,然后使用DATE
函数在Excel中将它们组合为适当的日期值。 (您可能需要使用日期格式来格式化结果,因为Excel将日期存储为自01/01/1900以来的天数,因此2017年8月11日在Excel中以42958的形式存储。)添加与您一样多的帮助列需要你的输入表来实现这一点。A10>=E2:E7
这样的表达产生6个元素的值与根据A10是否大于或等于 E2
,E3
,E4
,E5
,分别E6
和E7
TRUE
和FALSE
阵列。因此,您可以使用此方法生成一个数组,表示某个特定输出日期是否大于或等于(即在或之后)每个范围的开始日期。同样,您可以获得一个数组,显示相同的输出日期是否小于或等于(即在或之前)每个范围的结束日期。SUMPRODUCT
函数将输入表中的数组和相关会话/用户值组合起来,以获取输出日期的相关值。例如,如果开始日期为E2:E7
,结束日期为F2:F7
,B2:B7
中的会话和A10
中的输出日期,则确定归属于输出日期的会话数的可靠公式为=SUMPRODUCT(($A10>=$E$2:$E$7)*($A10<=$F$2:$F$7)*(B$2:B$7))
。可以复制此公式以给出所有输出日期的结果,并且假设用户的输入数据在C2:C7
中,那么如果将用户的结果复制到与会话结果相邻的列中,它还会为用户提供结果。在此公式中,TRUE
和FALSE
值分别有效地转换为1
和0
。有几点:(i)如果您不知道Excel中日期的工作方式,那么可以计算两个日期之间的天数或特定前后n天之间的任务使用简单的算术非常简单; (ii)不要混淆看起来像日期的文本字符串和可以在Excel中以算术方式处理的日期; (iii)我相信您的示例中存在一些错误 - 2017年8月16日是您的两个输入范围内的日期,并且应该具有(2,2)而非(1,1)和2017年8月17日的结果为类似的错误。
我在下面的插图中使用了这种方法,为了测试它的健壮性,我添加了一行额外的输入数据,其中会话与用户不同,并产生一个日期(19/08/2017)匹配任何输入范围。产生
输出时间范围如下所示:
非常感谢DDM。它以某种方式工作,但是,您是否也知道如何自动生成输出日期? 理想情况下,包含在不同范围内的所有日期应在输出日期 –
下列出如果此答案适用于您,请将其标记为正确。 – DMM