簡體   English   中英

以編程方式在Google表格中插入公式

[英]Insert formula in a Google Sheets programmatically

我需要將公式放入添加到Google表格的每個新行的單元格中。 我在VBA中有此功能,但無法在Script中正確構建它。 我遍歷我的行直到lastrow。 在單元格J中,我希望插入此公式:

var Discount = '=IF(ISBLANK("F"+i,,IF(ISNUMBER(FIND("CM","B"+i)),IF("C"+i>"F"+i,150,0),0))';

我使用這種方法添加行:

var dtaCollect = ["","",StartDate,CustomerName,Monthly,"",Discount,LateFee,TotalPaid,Commission,Note,Referral];
    target_sheet.appendRow(dtaCollect);
    i++;
    } else {
      i++;
      }
    }

但是,公式的寫法與上面完全相同,沒有用迭代值替換i 結果我得到#ERROR! 在牢房中。 我已經嘗試了INDIRECTconcat

我怎樣才能解決這個問題?

i的值未替換在您的字符串中,因為它只是文本。 您需要將其從字符串中分解出來,並更加小心地使用引號,以確保最終得到一個可行的公式。 這將工作:

var Discount = '=IF(ISBLANK(F'+i+',,IF(ISNUMBER(FIND("CM",B'+i+')),IF(C'+i+'>F'+i+',150,0),0))';

由於您使用的是A1Notation,因此只需一個簡單的JavaScript String.replace()就可以提供更具可讀性的解決方案:

var Discount = '=IF(ISBLANK(F%row%,,IF(ISNUMBER(FIND("CM",B%row%)),IF(C%row%>F%row%,150,0),0))'
               .replace(/%row%/g, i.toString());

說明:

  • replace()將找到正則表達式或子字符串匹配項,並將其替換為新的子字符串。
  • 在這種情況下,我們正在尋找一個正則表達式; g標志意味着我們將查找所有出現的“ %row% ”,並將它們替換為i的值。
  • 我們已將%用作書擋,以使可替換的文本清晰可見-只是一種約定,不是要求。

注意:您沒有顯示INDIRECT使用方式,只是提到您嘗試過。 這是替代方法,可能是首選方法,因為您可以簡單地從現有單元格復制公式,而不必擔心調整引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM