参考表格,如果满足某些条件,Details
我该如何编写这个公式来减去Date2
:Date1
计算: =Date1-Date2
周末除外,或者""
不满足条件的情况。
状况:
Type
第 1 列: 匹配任意{"new","old","contract"}
letter
第 2 列:="yes"
Business
第 3 列: 匹配"hospital"
任意位置
"myhospital2
,"Great hospital"
,"hospital #"
,"hospital"
等。Date1
第 4 栏:=NOT(ISBLANK)
我不确定如何在公式中组合所有这些条件。这是我尝试的:
IF(OR(Details[Type:]="new")
IF(OR(Details[Type:]="old")
IF(OR(Details[Type:]="contract")
IF(AND( Details[Letter]="Yes"
IF(Details[Business]="Hospital"
Isnotblank(Date1)
这是我的示例数据,预期输出在Result
第 5 列。
A | 乙 | C | 德 | 埃 | F | |
---|---|---|---|---|---|---|
1 | 类型 | 信 | 商业 | 日期1 | 日期2 | 结果 |
2 | 新的 | 是的 | 医院 | 2023 年 7 月 21 日 | 2023 年 7 月 10 日 | 11 |
3 | 老的 | 是的 | 医院 | 2023 年 6 月 25 日 | ||
4 | 合同 | 是的 | 护理 | 2023 年 8 月 10 日 | 2023 年 6 月 14 日 | |
5 | 推荐 | 是的 | 医院 | 2023 年 7 月 10 日 | 2023 年 7 月 5 日 |
专栏评论Result
:
F2=11
符合所有条件F3=""
Date1
是空白F4=""
Business
值无效(“护理”)F5=""
Type
值无效(“引荐”)
答案1
公式1
=IF(
AND(
OR(Details[@Type]="new",
Details[@Type]="old",
Details[@Type]="contract"),
Details[@letter]="yes",
IFERROR(FIND("hospital",Details[@Business]),),
LEN(Details[@Date1])),
NETWORKDAYS(Details[@Date2],Details[@Date1]), "")
二级方程式
=IF(
((Details[@Type]="new")+(Details[@Type]="old")+
(Details[@Type]="contract"))*(Details[@letter]="yes")*
IFERROR(FIND("hospital",Details[@Business]),)*
(Details[@Date1]>0),
NETWORKDAYS(Details[@Date2],Details[@Date1]),"")
解释
- Excel 需要数字
TRUE/FALSE
值的地方被解释为1/0
- 同样,
TRUE/FALSE
预计数字<>0/0
将被接受 - 加法
+
等同于OR
乘法*
等同于AND
- 数学运算顺序适用(括号、指数、乘法/除法、加法/减法):
(1+0+0)*1*1*0=0
但是1+0+0*1*1*0=1
类型 | 信 | 商业 | 日期1 | 和 | ||||
---|---|---|---|---|---|---|---|---|
新的(1+0+0) |
* |
是的1 |
* |
医院#1 |
* |
2023 年 7 月 21 日1 |
= |
✓1 |
老的(0+1+0) |
* |
是的1 |
* |
abc_医院1 |
* |
0 |
= |
✗0 |
合同(0+0+1) |
* |
是的1 |
* |
护理0 |
* |
2023 年 8 月 10 日1 |
= |
✗0 |
推荐(0+0+0) |
* |
是的1 |
* |
医院#abc1 |
* |
2023 年 7 月 10 日1 |
= |
✗0 |
公式 3
- 无法放置在表格内,因为表格不支持溢出
- 将使用单个公式返回整列的结果
- 两个关键变化二级方程式:
@
删除以引用整个列[Date1]
并[Date2]
通过添加零转换为数组,因为 NETWORKDAYS 不支持范围。
=IF(
((Details[Type]="new")+(Details[Type]="old")+
(Details[Type]="contract"))*(Details[letter]="yes")*
IFERROR(FIND("hospital",Details[Business]),)*
(Details[Date1]>0),
NETWORKDAYS(Details[Date2]+0,Details[Date1]+0),"")