Excel Power Query ReplaceValue调用自定义函数报Formula.Firewall错误如何解决
报错原因
Formula.Firewall报错是Power Query的公式防火墙安全限制触发的:你在表查询的行上下文中直接调用访问工作簿数据源的自定义函数GetValue,触发了跨数据源访问的隐私校验规则。
可落地解决步骤
- 步骤1:预先读取命名单元格的值做成独立查询
新建空白查询命名为NTValueConst,代码写为:
右键该查询,设置为【仅创建连接】,不需要加载到工作表。= GetValue("NTValue") - 步骤2:修改替换步骤代码,避免行上下文调用数据源访问函数
把原有替换步骤的代码调整为预先提取常量值再做替换,参考代码:= let NTConst = NTValueConst, ReplaceResult = Table.ReplaceValue(#"Table5", each [Value2], each if [Value1] = "NT" then NTConst else [Value2], Replacer.ReplaceValue, {"Value2"}) in ReplaceResult - 步骤3:校验隐私等级配置(如果调整后仍报错)
同时选中你的表查询和NTValueConst查询,右键选择【隐私级别】,将两个查询的隐私等级设置为同一个选项(比如均设为公共/均设为组织),消除隐私等级差导致的防火墙拦截。
可选备用方案(仅适用于本地非敏感数据场景):
你也可以临时关闭公式防火墙:点击【数据】选项卡→【获取数据】→【查询选项】→【隐私】面板,选择【忽略隐私级别并潜在地提高性能】,确认后重新运行查询即可。
内容的提问来源于stack exchange,提问作者Ash_23S
相关产品推荐
相关产品推荐

