在工作表中绘制单元格的值,就像另一个单元格正在更改一样

问题描述 投票:0回答:1

我有一个电子表格,其中包含一些计算,我想绘制一个图表,显示当另一个单元格的值发生变化(从 0 到 100)时,一个单元格的值会发生什么情况。我已经搜索了大约 45 分钟,但找不到任何可以实现此目的的插件或函数。为每个步骤复制数据是不切实际的,因为有大量依赖于该值的临时计算。

这很容易实现吗?还是我需要重组我的电子表格来制作 100 个公式副本?

这是一个简化版本,我想绘制当 A2 从 0 到 100 变化时 J2 的值。公式并不精确,因为真实的工作表要复杂得多,但这是相同的想法。

https://docs.google.com/spreadsheets/d/1nGx0smnBU8J9MU4wlKStSgPe2poVIvYENevvnG1a5AY

google-sheets google-sheets-formula spreadsheet
1个回答
0
投票

使用 For 循环绘制单元格

我根据您的电子表格使用 App Script 创建了一个解决方案。

脚本如何工作

  • Cell

    A2
    包含指定要计算的输出数量的输入。

  • 将此脚本插入到您的

    电子表格扩展
    中的Code.gs文件中。

代码.gs

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = ss.getRange("A1:J5").getValues();

  const header = data[0].map(x => x.toUpperCase());
  const input = data[1][0];
  const baselines = [data[1][2], data[2][2], data[3][2], data[4][2]];
  const modifier = [data[1][3], data[2][3], data[3][3], data[4][3]];

  for (let i = 0; i < input + 1; i++) {
    const output = [header];
    const realModifier = [i * modifier[0] * 2, i * modifier[1] / 5, i * modifier[2] * 2, i * modifier[3] / 3];
    const average = [baselines[0] + realModifier[0], baselines[1] + realModifier[1], baselines[2] + realModifier[2], baselines[3] + realModifier[3]]
    const plusOneTwoThree = average[0] + average[1] + average[2];
    const plusOneThreeFour = average[0] + average[2] + average[3];
    const diff = plusOneTwoThree - plusOneThreeFour;

    for (let o = 0; o < data.length - 1; o++) {
      output.push(["", "", baselines[o], modifier[o], realModifier[o], average[o], "", "", "", ""]);
    }

    output[1][0] = i;
    output[1][7] = plusOneTwoThree;
    output[1][8] = plusOneThreeFour;
    output[1][9] = diff;

    ss.getRange(ss.getLastRow() + 3, 1, 5, 10).setValues(output);
  }
}

示例输出:

Sample Output 1

参考:


© www.soinside.com 2019 - 2024. All rights reserved.