空值策略:Unit 和 Postal Code 为选填,真正空白或公式空字符串时跳过;Street 和 City 为必填。数字 0 是数据,不是空白。N/A 保留为字面文本。任何来源错误或必填缺失返回“待检查”。
Display Address 公式:=IFERROR(IF(OR([@Street]="",[@City]=""),"待检查",TEXTJOIN(", ",TRUE,[@Unit],[@Street],[@City],[@[Postal Code]])),"待检查")。TEXTJOIN 的 ignore_empty 为 TRUE,因此 Unit 或 Postal Code 缺失时连同对应分隔位置一起删除。Postal Code 保持文本,01970 不丢失。另加审计列:=IF([@[Postal Code]]="","邮编缺失","")。
Contact Label 公式:=IFERROR(IF(OR([@Street]="",[@City]=""),"待检查",TEXTJOIN(", ",TRUE,[@Unit],[@Street],[@City],[@[Postal Code]])&" — 分机 "&TEXT([@Extension],"0")),"待检查")。不要对 Extension 使用真假判断,因为必须保留 0。
测试:全部存在 → “4B, 18 Lake Rd, Salem, 01970 — 分机 0”;Unit 空字符串 → “18 Lake Rd, Salem, 01970”,没有开头逗号;Postal Code 空白 → 地址跳过邮编并产生审计标记;Street 空白 → 待检查;Unit 为 N/A → 以“N/A, …”开头;来源错误 → 待检查;表内向下复制保持行级引用。CSV 导出后抽查 01970 是否保留,以及含逗号字段是否由导出器正确加引号。