提取和比较 excel 中的日期

pulling and comparing dates in excel

例如:

在我的第一个选项卡 Last visit 上,我有列 Customer NameCustomer #Scheduled date

在我的第二个选项卡上,All visits 我有 Customer NameCustomer #Visit Dates。现在,此选项卡显示所有访问日期(甚至是 Last visit 上的最后一个访问日期),而第一个选项卡仅显示他们的上次访问日期和下一个预定日期。

目标:在我的第一个选项卡 Last Visit 上,我需要一些逻辑来比较计划的访问日期和所有访问日期.. 对于该特定客户 ID。因此,在 Scheduled date 之后的下一列中,我想要一个新列 Last visit date 来比较该特定客户上次访问日期之前的访问。所以有些客户有多次访问,我需要每个客户的每个单元格(这家商店超过 300 个)读取他们访问的所有时间并且只提取最大(最近但不是他们最后一次访问的那个)日期第二个标签 All visits

我想要他们所有访问的第二大日期的原因是因为在 all visits 选项卡中,甚至他们的预定日期也输入在那里。

示例:选项卡 1:

Billy Joe    12345     1/02/15       <-- Scheduled visit    new column    --> visit before last visit

Custmer2      Id2       Date

EtcTab 2:

  Billy Joe    12345     03/15/14

  Billy Joe    12345     04/15/14

  Billy Joe    12345     1/02/15

所以我想要日期 4/15/14 而不是其他两个..

我有一个适用于 MOST customers.the 问题的偏方程式是:

如果客户每月访问一次以上,它仍然会在所有 his/her 访问中拉出第二高的日期。我如何检查以确保最后一次访问之前的访问必须少于他们上次访问

这是我的等式:

{=LARGE(IF(('All visits'!B:B='Last visit'!B2),('All visits'!C:C)),2)}

B2 对应于客户 ID(它与其他页面上的 ID 匹配,所以当我将其向下拖动时,它会继续匹配 ID)...

问题示例:

6/3/2015
6/18/2015
6/26/2015
6/9/2015

请注意每个月有多次访问,所以我的等式会将 6/18/2015 放在所有地点,即使他们该月的预定访问次数少于 last visit

如果我理解正确,我们需要做的就是在您的 LARGE 函数中添加一个额外的数组条件。

根据客户 ID,您已经获得第二大。但是我们想要基于客户 Id 基于预定日期的第二大:

=LARGE(('All visits'!B:B='Last visit'!B1)*('All visits'!C:C>0)*(IF('All visits'!C:C<='Last visit'!C1,'All visits'!C:C)),2)
         ^^^^^^^^^ Customer ID  ^^^^^^^^    ^^ignore blanks^^    ^^^^ Only grab the dates that are <= last visit ^^^^   ^ 2nd largest

编辑以在客户只有 1 个访问日期时添加额外检查:

如果我们希望它显示 #N/A 如果日期少于两个,我们必须使用 SUMPRODUCT 来获取条目总数:

SUMPRODUCT(('All visits'!B:B='Last visit'!B1)*('All visits'!C:C>0)*('All visits'!C:C<='Last visit'!C1))

然后我们可以将其添加到 IF 语句中 return 用于 <2 案例的 NA() 或我们用于 >=2 案例的原始公式:

=IF(SUMPRODUCT(('All visits'!B:B='Last visit'!B1)*('All visits'!C:C>0)*('All visits'!C:C<='Last visit'!C1))<2,NA(),LARGE(('All visits'!B:B='Last visit'!B1)*('All visits'!C:C>0)*(IF('All visits'!C:C<='Last visit'!C1,'All visits'!C:C)),2))

您可以将 NA() 更改为符合您要求的任何内容