我有一个工作簿,它使用来自 Web 的数据源(XML 查询)来提取一些信息。如果我为一个值发送“0”或“空白”,服务器将返回错误,因此我试图找到一种方法将我的一个查询包装在条件中,if statement
以便查询仅在特定单元格中有正值时运行(SecondSize
如果有帮助,则命名该单元格)。我去了 PowerEditor,然后去了高级编辑器,得到了以下信息,但不确定在哪里(以及如何)在这里放置 IF 语句。
let
apiAddress = Excel.CurrentWorkbook(){[Name="ApiUrl2"]}[Content]{0}[Column1],
Source = Json.Document(Web.Contents(apiAddress)),
#"Converted to Table" = Record.ToTable(Source),
Value = #"Converted to Table"{6}[Value],
ac_monthly = Value[ac_monthly],
#"Converted to Table1" = Table.FromList(ac_monthly, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore)
in
#"Converted to Table1"
在真正理想的世界中,我不但会在值为 0 或空白时跳过查询,而且还会用“0”覆盖表 1 中的 12 个值...但如果太多,我可以对另一个单元格进行条件管理该部分。
答案1
您的问题目前还不是 100% 清楚,但假设成功的 API 调用将返回表中的 12 行,并且如果 SecondSize 不大于 0,则您希望返回每行均为零的 12 行表,然后尝试以下操作:
let
apiAddress = Excel.CurrentWorkbook(){[Name="ApiUrl2"]}[Content]{0}[Column1],
secondSize = Excel.CurrentWorkbook(){[Name="SecondSize"]}[Content]{0}[Column1],
getResultAndProcess = (apiAddress) =>
let
Source = Json.Document(Web.Contents(apiAddress)),
asTable = Record.ToTable(Source),
Value = asTable{6}[Value],
ac_monthly = Value[ac_monthly],
result = Table.FromList(ac_monthly, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore)
in
result,
result =
if secondSize > 0
then getResultAndProcess(apiAddress)
else Table.FromList(List.Repeat({0}, 12), Splitter.SplitByNothing())
in
result