0

我正在尝试创建一个遵循以下逻辑的“收入日期”字段。我希望收入日期字段根据我们的 CS 团队编辑的日期字段进行计算。字段(可编辑的日期字段)是 - 覆盖日期 - 电子邮件开始日期 - 生效日期 - 预计电子邮件开始日期 - 预计 GL 日期

第 5 个自动计算的日期字段(预计上线日期始终具有日期值(仅在上述字段为空白时使用)

所以,我试图使用的逻辑是

(i) 是否有超车日期?如果是,那么就拿这个停下来。如果没有,继续(ii)

(ii) 是否至少有“<strong>电子邮件开始日期”或“<strong>实时日期”之一?如果是,请选择其中较早的一个并停止。如果不是,继续 (iii)

(iii) 是否存在“<strong>预计电子邮件开始日期”和“<strong>预计 GL 日期”中的至少一个?? 如果是,请选择其中较早的一个并停止。如果否,继续 (iv)

(iv) 如果上述所有字段均为空白,则采用预计上线日期

我知道这看起来令人困惑,但这只是因为我们计算收入的方式取决于我们的客户服务团队输入的日期,即我们在客户网站上的活动时间(与交易的结束日期不同)。

下面这个公式的某个地方似乎出错了..

BLANKVALUE(Over_ride_Date__c, IF(NOT(ISBLANK(Email_Start_Date__c)) && NOT(ISBLANK(Live_Date__c)), IF(Email_Start_Date__c < Live_Date__c, Email_Start_Date__c, Live_Date__c)), IF(ISBLANK(Email_Start_Date__c) && ISBLANK(Live_Date__c)) (ISBLANK(Estimated_Email_Start_Date__c))&& NOT(ISBLANK(Estimated_G_L_Date__c)),IF(Estimated_Email_Start_Date__c <Estimated_G_L_Date__c,Estimated_Email_Start_Date__c,Estimated_G_L_Date__c)),IF(ISBLANK(Estimated_Email_Start_Date__c)&& ISBLANK(Estimated_G_L_Date__c)),BLANKVALUE(Estimated_Go_Live_Date__c,Estimated_Go_Live_Date__c)))

4

1 回答 1

1

我将尝试引导您完成我的设计过程;)

公式的基本形状可能是这样的:

BLANKVALUE(Over_ride_Date__c,
    IF(ISBLANK(Email_Start_Date__c) && ISBLANK(Live_Date__c),
        IF(ISBLANK(Estimated_Email_Start_Date__c) && ISBLANK(Estimated_G_L_Date__c),
            Estimated_Go_Live_Date__c,
            /* need to use Estimated_Email_Start_Date__c or Estimated_G_L_Date__c */
        ),
        /* need to use Email_Start_Date__c or Live_Date__c */
    )
)

现在应该很容易。如果未设置“覆盖”并且“电子邮件开始日期”和“实时日期”均为空白 - 转到下一个变量。否则(这是我们还没有的部分)如果至少设置了其中一个 - 我们将尝试使用它们。与最后一对日期类似。


那么现在会是什么:

  1. 电子邮件和实时已填写 - 取小一点
  2. 邮箱填写,Live null - 取邮箱
  3. 电子邮件为空,已填满 - 直播

有几种方法可以做到这一点。有点长但可读:

IF(ISBLANK(Email_Start_Date__c),
    Live_Date__c,
    IF(ISBLANK(Live_Date__c),
        Email_Start_Date__c,
        IF(Email_Start_Date__c < Live_Date__c, Email_Start_Date__c, Live_Date__c)
    )
)

但我要提倡这一点:

IF(ISBLANK(Live_Date__c) || BLANKVALUE(Email_Start_Date__c, Live_Date__c) < Live_Date__c,
    BLANKVALUE(Email_Start_Date__c, Live_Date__c),
    Live_Date__c
)

这是它有效的证明:

真值表

(仅 9 行,因为那是所有组合:smaller/bigger/null* smaller/bigger/null)。事实上,最后一个 ( null and null) 我们已经排除了之前的 IF 语句。


这导致我们...

BLANKVALUE(Over_ride_Date__c,
    IF(ISBLANK(Email_Start_Date__c) && ISBLANK(Live_Date__c),
        IF(ISBLANK(Estimated_Email_Start_Date__c) && ISBLANK(Estimated_G_L_Date__c),
            Estimated_Go_Live_Date__c,
            IF(ISBLANK(Estimated_G_L_Date__c) || BLANKVALUE(Estimated_Email_Start_Date__c, Estimated_G_L_Date__c) < Estimated_G_L_Date__c,
                BLANKVALUE(Estimated_Email_Start_Date__c, Estimated_G_L_Date__c),
                Estimated_G_L_Date__c
            )
        ),
        IF(ISBLANK(Live_Date__c) || BLANKVALUE(Email_Start_Date__c, Live_Date__c) < Live_Date__c,
            BLANKVALUE(Email_Start_Date__c, Live_Date__c),
            Live_Date__c
        )
    )
)
于 2013-01-16T19:46:35.113 回答