如何通过比率连接单元格的值?
How to connect values of cells through ratio?
我正在寻找通过按行比率连接单元格值的最佳方式。当我在单元格中输入新值时,我想根据比率在其他单元格中获取新值。因此,E 列和 F 列之间的比率 1,F 列和 G 列之间的比率 2。
function onEdit(e) {
var cells1 = ["E2", "E3", "E4"]; // Cells to connection
var cells2 = ["F2", "F3", "F4"];
var cells3 = ["G2", "G3", "G4"];
var ratio1 = ["H2", "H3", "H4"]; // Expected ratio between values of cells
var ratio2 = ["I2", "I3", "I4"];
var value = (typeof e.value === 'number' ? "" : e.value);
var sheet = e.range.getSheet();
var cell = e.range.getA1Notation();
k = cells1.indexOf(cell);
if (k != -1) {
sheet.getRange(cells2[k]).setValue(value);
sheet.getRange(cells3[k]).setValue(value);
}
k = cells2.indexOf(cell);
if (k != -1) {
sheet.getRange(cells1[k]).setValue(value);
sheet.getRange(cells3[k]).setValue(value);
}
k = cells3.indexOf(cell);
if (k != -1) {
sheet.getRange(cells1[k]).setValue(value);
sheet.getRange(cells2[k]).setValue(value);
}
如果固定三列之间的比例,那么只有一个值可以被变量赋值。之后,所有列都应更新为该参数,在本例中为已编辑的单元格值。
此外,当您只能获取修改后的单元格(基于 1 的数组)的索引时,您检索修改后的单元格的方式有点复杂。
因此,您只需要获取修改单元格的列和行,然后使用该行的比率更新其他单元格。
function onEdit(e) {
var value = (typeof e.value === 'number' ? "" : e.value);
var sheet = e.range.getSheet();
// Get the "Coordinates" of the edit
var startColumn = e.range.getColumn();
var startRow = e.range.getRow();
// Get the ratios at the edited row
var hRatio = sheet.getRange(startRow, 8).getValue();
var iRatio = sheet.getRange(startRow, 9).getValue();
if (startColumn == 5 && startRow > 1 && startRow < 5) { // Edit on E column
sheet.getRange(startRow, 6).setValue(value / hRatio); //Update F Cell
sheet.getRange(startRow, 7).setValue(value / hRatio / iRatio); // Update G Cell
}
if (startColumn == 6 && startRow > 1 && startRow < 5) { // Edit on F column
sheet.getRange(startRow, 5).setValue(hRatio * value); // Update on E cell
sheet.getRange(startRow, 7).setValue(value / iRatio); // Update on G Cell
}
if (startColumn == 7 && startRow > 1 && startRow < 5) { // Edit on G column
sheet.getRange(startRow, 5).setValue(hRatio * iRatio * value); // Update on E cell
sheet.getRange(startRow, 6).setValue(iRatio * value); // Update on F cell
}
}
希望这对你有用
我正在寻找通过按行比率连接单元格值的最佳方式。当我在单元格中输入新值时,我想根据比率在其他单元格中获取新值。因此,E 列和 F 列之间的比率 1,F 列和 G 列之间的比率 2。
function onEdit(e) {
var cells1 = ["E2", "E3", "E4"]; // Cells to connection
var cells2 = ["F2", "F3", "F4"];
var cells3 = ["G2", "G3", "G4"];
var ratio1 = ["H2", "H3", "H4"]; // Expected ratio between values of cells
var ratio2 = ["I2", "I3", "I4"];
var value = (typeof e.value === 'number' ? "" : e.value);
var sheet = e.range.getSheet();
var cell = e.range.getA1Notation();
k = cells1.indexOf(cell);
if (k != -1) {
sheet.getRange(cells2[k]).setValue(value);
sheet.getRange(cells3[k]).setValue(value);
}
k = cells2.indexOf(cell);
if (k != -1) {
sheet.getRange(cells1[k]).setValue(value);
sheet.getRange(cells3[k]).setValue(value);
}
k = cells3.indexOf(cell);
if (k != -1) {
sheet.getRange(cells1[k]).setValue(value);
sheet.getRange(cells2[k]).setValue(value);
}
如果固定三列之间的比例,那么只有一个值可以被变量赋值。之后,所有列都应更新为该参数,在本例中为已编辑的单元格值。
此外,当您只能获取修改后的单元格(基于 1 的数组)的索引时,您检索修改后的单元格的方式有点复杂。
因此,您只需要获取修改单元格的列和行,然后使用该行的比率更新其他单元格。
function onEdit(e) {
var value = (typeof e.value === 'number' ? "" : e.value);
var sheet = e.range.getSheet();
// Get the "Coordinates" of the edit
var startColumn = e.range.getColumn();
var startRow = e.range.getRow();
// Get the ratios at the edited row
var hRatio = sheet.getRange(startRow, 8).getValue();
var iRatio = sheet.getRange(startRow, 9).getValue();
if (startColumn == 5 && startRow > 1 && startRow < 5) { // Edit on E column
sheet.getRange(startRow, 6).setValue(value / hRatio); //Update F Cell
sheet.getRange(startRow, 7).setValue(value / hRatio / iRatio); // Update G Cell
}
if (startColumn == 6 && startRow > 1 && startRow < 5) { // Edit on F column
sheet.getRange(startRow, 5).setValue(hRatio * value); // Update on E cell
sheet.getRange(startRow, 7).setValue(value / iRatio); // Update on G Cell
}
if (startColumn == 7 && startRow > 1 && startRow < 5) { // Edit on G column
sheet.getRange(startRow, 5).setValue(hRatio * iRatio * value); // Update on E cell
sheet.getRange(startRow, 6).setValue(iRatio * value); // Update on F cell
}
}
希望这对你有用