我正在尝试创建一个“收入日期”字段,该字段遵循以下逻辑。 我希望收入日期字段根据我们的CS团队编辑的日期字段进行计算。 字段(可编辑的日期字段)是 - 超骑日期 - 电子邮件开始日期 - 直播日期 - 估计电子邮件开始日期 - 估计G L日期
第5个自动计算日期字段(估计上线日期)始终具有日期值(仅在上述字段为空时才使用)
所以,我试图使用的逻辑是
(i)是否有覆盖日期?如果是,那就拿下并停下来。 如果没有,请转到(ii)
(ii)是否至少有一个“电子邮件开始日期”或“实时日期”?如果是,请采取前面的这些并停止。 如果没有,请转到(iii)
(iii)是否至少有一个“估计的电子邮件开始日期”和“估计的G L日期”? ?如果是,请采取前面的这些并停止。 如果没有,请转到(iv)
(iv)如果以上所有字段均为空白,请参加预计上线日期
我知道这看起来令人困惑,但这仅仅是因为我们计算收入的方式取决于我们的CS团队在客户网站上的时间输入的日期(与交易截止日期不同)。
在下面这个公式中似乎出错了。
BLANKVALUE(Over_ride_Date__c, IF(不是(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)), IF(NOT(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)))
答案 0 :(得分: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 */
)
)
现在应该很容易。如果未设置“覆盖”且“电子邮件开始日期”和“实时日期”均为空白 - 请转到下一个变量。否则(这是我们尚未拥有的部分)如果至少设置了其中一个 - 我们将尝试使用它们。与最后一对日期类似。
那么现在会是什么:
有几种方法可以做到这一点。有点长但可读:
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
)
)
)