2

我有一个 Google 电子表格,使用此github 链接中给出的脚本从融合表中添加数据。我在电子表格的右端添加了两列,其中一列使用公式填充

    =COUNTIF(A$2:A$24,A2)

和其他列由另一个公式。目前,每次使用新行更新电子表格时,我都会手动拖动公式列来更新其中的数据。是否可以使用脚本动态更新公式列?即,当行添加公式列也动态更新。

编辑:

// evaluate project type and set identifier
function addCountIfFormulaToCell(){

    // add the id of your spreadsheet here
    var sss = SpreadsheetApp.openById('0AozvCNI02VmpdG5tb0pkUGdDR3djMm5NV0pYeThFbGc');

    // add the name of the sheet here
    var ss = sss.getSheetByName('Sheet1');

    // column you want to evaluate for the formula
    var columnToEvaluateAgainst = "A";

    // column you want to add the formula to
    var columnToAddFormulaTo = "H";

    // identifies the last row
    var lastRow = ss.getLastRow();

    // is the cell to evaluate in the last row
    var evaluateThisCell = columnToEvaluateAgainst + lastRow;

    // is the cell that gets the forumla in the last row
    var addFormulaToThisCell = columnToAddFormulaTo + lastRow;

    // this is my formula
    var projectFormula = "COUNTIF(A$2:$A,A2)";

    // grabs the cell that gets the forumla in the last row
    var ssCellToGetFormula = ss.getRange(addFormulaToThisCell);

    // sets the formula to the cell in the last row
    ssCellToGetFormula.setFormula(projectFormula);

};
4

2 回答 2

0

Pradeep…您可以使用一个应用程序脚本,该脚本在将新行添加到电子表格时触发运行。

下面的脚本是从我用来将 IF 公式插入到最后一行的单元格中的脚本修改的,该单元格计算另一列中的值。

迅速地:

  • 添加电子表格的 ID。
  • 添加工作表的名称。
  • 我为要评估的列和要添加公式的列创建了一个变量。你可能需要也可能不需要这个。
  • 使用.getLastRow()获取电子表格的最后一行。
  • 创建一个范围,它将精确定位我要评估的单元格以及我将添加公式的单元格
  • 为公式创建一个变量。
  • 获取我将添加公式的单元格。
  • 使用.setFormula将公式添加到该单元格。

这可能更有效,您可能无法直接使用它,但它会让您了解一些可用的机制。

克里斯·K。

    // evaluate project type and set identifier
    function addCountIfFormulaToCell(){

        // add the id of your spreadsheet here
        var sss = SpreadsheetApp.openById('0ApI9xmBd0k....');

        // add the name of the sheet here
        var ss = sss.getSheetByName('Sheet1');

        // column you want to evaluate for the formula
        var columnToEvaluateAgainst = "B";

        // column you want to add the formula to
        var columnToAddFormulaTo = "C";

        // identifies the last row
        var lastRow = ss.getLastRow();

        // is the cell to evaluate in the last row
        var evaluateThisCell = columnToEvaluateAgainst + lastRow;

        // is the cell that gets the forumla in the last row
        var addFormulaToThisCell = columnToAddFormulaTo + lastRow;

        // this is my formula
        var projectFormula = "THIS IS MY FORMULA";

        // grabs the cell that gets the forumla in the last row
        var ssCellToGetFormula = ss.getRange(addFormulaToThisCell);

        // sets the formula to the cell in the last row
        ssCellToGetFormula.setFormula(projectFormula);

    };
于 2013-04-23T16:30:14.370 回答
0

另一种选择是使用将自动填充列的单个数组公式:

=ArrayFormula(IF(LEN(A2:A);COUNTIF(A2:A;A2:A);IFERROR(1/0)))

于 2013-04-23T21:34:54.310 回答