我在单元格 A1 中有一个查询,它正在抓取信息并将其显示在不同的电子表格中。当有人在查询显示的范围内键入任何内容时,它会给出#REF!所以我想制定一个 if 标准来清除该范围内的所有单元格if('A1' == '#REF!')
但似乎不起作用。我还进行了设置,以便如果 A1 != 'Query formula' 将其设置为 'Query formula'
var queryString = '=Query(ImportRange("Spreadsheetid","\'Sheet1\'!A1:Z1000"),"SELECT Col1, Col2 WHERE Col1 != \'\' Order By Col1",1)'
var lastRow = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getLastRow()
Logger.log(getValue('A1'))///it says it's #REF!
if('A1' == '#REF!'){
SpreadsheetApp.getActiveSpreadsheet().getRange('A2:B'+lastRow).clear({contentsOnly: true});
}
if('A1' != queryString){
setValue('A1',queryString)
}
在测试它时,似乎主要问题是 if 标准。它不是将其视为#REF!?即使 logger.log 说它等于它的样子,它是否将其视为查询公式?
您将无法在 if 语句中仅使用“A1”来检查单元格。尝试单独定义它,然后检查您的变量,例如:
function replaceRef() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('SHEET_NAME'); //enter sheet name here
var value = sh.getRange('A1').getValue();
var formula = sh.getRange('A1').getFormula();
var queryString = '=Query(ImportRange("Spreadsheetid","\'Sheet1\'!A1:Z1000"),"SELECT Col1, Col2 WHERE Col1 != \'\' Order By Col1",1)';
var lastRow = sh.getLastRow();
if (value == '#REF!') {
sh.getRange('A2:B'+lastRow).clear({contentsOnly: true});
}
if (formula != queryString) {
sh.getRange(1, 1).setFormula(queryString); //get cell A1 and set formula
}
}
如您所见,我进行了一些更改。主要是将要检查的值定义为变量,我已经在var value
和 中完成了var formula
。然后,您可以使用这些值与您在 if 语句中尝试的值进行比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句