Power Query合并列去除Null:嵌套IF语句失效求助
Power Query嵌套IF语句逻辑修正
问题分析
你的原代码逻辑顺序错误,未覆盖所有null嵌套场景:
- 当
Date3为null时,仅返回Date2,但未处理Date2也为null的情况(比如第一行) - 后续
else if分支仅在Date3非空时触发,此时判断Date2/Date1的null状态无意义,直接导致第四行返回null
正确的嵌套IF写法
按照优先取Date3→Date2→Date1的需求,正确的嵌套IF需逐层处理内层null:
#"Added Custom" = Table.AddColumn( #"Removed Other Columns", "Custom", each if [Date3] = null then // Date3为空时,检查Date2 if [Date2] = null then [Date1] else [Date2] else [Date3] )
或采用更直观的非空判断写法:
#"Added Custom" = Table.AddColumn( #"Removed Other Columns", "Custom", each if [Date3] <> null then [Date3] else if [Date2] <> null then [Date2] else [Date1] )
更简洁的替代方案
Power Query内置Value.Coalesce函数,可直接返回列表中第一个非空值,无需嵌套IF:
#"Added Custom" = Table.AddColumn( #"Removed Other Columns", "Custom", each Value.Coalesce({[Date3], [Date2], [Date1]}) )
该函数会按列表顺序自动查找第一个非空值,逻辑与嵌套IF完全一致,但代码更简洁易读。
测试结果
使用上述任意代码后,将得到你期望的结果:
| Date1 | Date2 | Date3 | Custom |
|---|---|---|---|
| 4/18/2023 | Null | Null | 4/18/2023 |
| 4/18/2023 | 2/18/2023 | Null | 2/18/2023 |
| Null | 2/18/2023 | 1/18/2023 | 1/18/2023 |
| Null | Null | 1/18/2023 | 1/18/2023 |
内容的提问来源于stack exchange,提问作者JeanPCQ
相关产品推荐
相关产品推荐

