我有一个电子表格,其中包含一些计算,我想绘制一个图表,显示当另一个单元格的值发生变化(从 0 到 100)时,一个单元格的值会发生什么情况。我已经搜索了大约 45 分钟,但找不到任何可以实现此目的的插件或函数。为每个步骤复制数据是不切实际的,因为有大量依赖于该值的临时计算。
这很容易实现吗?还是我需要重组我的电子表格来制作 100 个公式副本?
这是一个简化版本,我想绘制当 A2 从 0 到 100 变化时 J2 的值。公式并不精确,因为真实的工作表要复杂得多,但这是相同的想法。
https://docs.google.com/spreadsheets/d/1nGx0smnBU8J9MU4wlKStSgPe2poVIvYENevvnG1a5AY
我根据您的电子表格使用 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);
}
}
示例输出:
参考: