基本上我想復制一個單元格,但取該單元格的最大數字。
前任
我有一個初始值為 10 的單元格 B1 在另一個單元格前 B2 上復制單元格 B1,該值將始終為 10 但如果單元格 B1 變為 5 我希望單元格 B2 保持為 10。但反過來,如果單元格 B1 變為 20,單元格 B2 也會變為 20等等......如果單元格B1仍然減少到8,例如,單元格B2現在總是保持20,以這種方式繼續。
基本上我希望 B2 取 B1 的值,但不等于 B1 曾經擁有的最大值。
uj5u.com熱心網友回復:
在您的情況下,以下由 Google Apps Script 創建的示例腳本如何?在此示例腳本中,該腳本可用作自定義函式。
示例腳本:
請將以下腳本復制粘貼到電子表格的腳本編輯器中并保存。
function SAMPLE(v, key = "sample") {
if (v != "" && isNaN(v)) throw new Error("Inputted value is not number.")
const p = PropertiesService.getScriptProperties();
if (v == "") {
p.deleteProperty(key);
}
const previousValue = p.getProperty(key);
if (previousValue) {
const pv = Number(previousValue);
v = pv < v ? v : pv;
}
p.setProperty(key, v);
return v
}
- 為了使用這個腳本,請將一個自定義函式
=SAMPLE(A1Notation)放到一個單元格中。至此,腳本運行完畢。
結果:
當為您的問題中的流程運行上述腳本時,將獲得以下結果。

在這個腳本中,當單元格為空時,PropertiesService 被重置。
筆記:
- 當你想在多個單元格使用這個自定義函式時,在當前階段,可以存盤一個最大值。但是,例如,當您想為每個單元格使用每個最大值時,請放置一個自定義函式
=SAMPLE(A1Notation, "keyName"). 通過這種方式,特定的密鑰用于 PropertiesServices。這樣,每個自定義函式都可以用于每個最大值。
參考:
- Google 表格中的自定義函式
- 物業服務
uj5u.com熱心網友回復:
function max() {
let mval = parseInt(PropertiesService.getScriptProperties().getProperty('mval'));
const ss = SpreadsheetApp.openById(gobj.globals.ssid);//this is a global object that I keep things I use a lot. Just replace it with the id of whatever spreadsheet you using
const sh = ss.getSheetByName('Sheet0');//change as required
let val = sh.getRange('B1').getValue();//change as required
if (val > mval) {
PropertiesService.getScriptProperties().setProperty('mval',val);
return val;
} else {
return mval;
}
}
uj5u.com熱心網友回復:
- 每當編輯 B1 時,使用 onEdit 觸發器獲取 B1 的最新值。
- 將該值復制到 B2,如果它大于當前的 B2 值
/**
* @param {GoogleAppsScript.Events.SheetsOnEdit} e
*/
function onEdit(e) {
const [sheetName, maxRangeName] = ['Sheet1', 'B1'];
let sheet;
if (
e.range.getA1Notation() !== maxRangeName ||
(sheet = e.range.getSheet()).getName() !== sheetName
)
return;
const b2Rng = sheet.getRange('B2'),
[b1, b2] = [e.value, b2Rng.getValue()];
if (b1 > b2) b2Rng.setValue(b1);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/350470.html
