尝试在Google Sheets中进行动态股权分割计算



在Google Sheets中使用javascript的新手。我正在尝试创建一个表格,根据业务合作伙伴的动态分割百分比和收到的资金自动计算他们将收到什么。百分比来自一个单元格,但向合作伙伴支付的每一笔款项都将输入一列。到目前为止,我拥有的是:

/**
* Creates a Date Stamp if a column is edited.
* Also performs dynamic split calculations
*/
//CORE VARIABLES
// The column you want to check if something is entered.
var COLUMNTOCHECK = 13;
// Where you want the date time stamp offset from the input location. [row, column]
var DATETIMELOCATION = [0,-1];
// Where the calculations will be performed for the Partners.
var PARTNERONELOCATION = [0, 1];
var PARTNERTWOLOCATION = [0, 2];
var PARTNERTHREELOCATION = [0, 3];
// Sheet you are working on
var SHEETNAME1 = 'Sheet1'
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var partnerOnePercent = sheet.getRange("G2").getValue();
var partnerOnePaySource = sheet.getRange("M2").getValue();
var partnerTwoPercent = sheet.getRange("G3").getValue();
var partnerTwoPaySource = sheet.getRange("M2").getValue();
var partnerThreePercent = sheet.getRange("G4").getValue();
var partnerThreePaySource = sheet.getRange("M2").getValue();
//checks that we're on the correct sheet.
if(sheet.getSheetName() == SHEETNAME1 ) {
var selectedCell = ss.getActiveCell();
//checks the column to ensure it is on the one we want to cause the date and calculations to appear.
if( selectedCell.getColumn() == COLUMNTOCHECK) { 
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
var partnerOneCell = selectedCell.offset(PARTNERONELOCATION[0],PARTNERONELOCATION[1]);
partnerOneCell.setValue((partnerOnePercent/100)*partnerOnePaySource);
var partnerTwoCell = selectedCell.offset(PARTNERTWOLOCATION[0],PARTNERTWOLOCATION[1]);
partnerTwoCell.setValue((partnerTwoPercent/100)*partnerTwoPaySource);
var partnerThreeCell = selectedCell.offset(PARTNERTHREELOCATION[0],PARTNERTHREELOCATION[1]);
partnerThreeCell.setValue((partnerThreePercent/100)*partnerThreePaySource);
}
}
}

我想让它做的是,当我在列(第13列(中输入付款时,将付款拆分为合作伙伴位置单元格(var partnerOneCell、var partnerTwoCell、var partnerThreeCell(,这些单元格与输入付款金额的单元格相抵消,我只想按输入付款金额时的百分比计算。如有任何帮助,我们将不胜感激。

现在它只是基于单元M2(第2行,第13列(进行计算。我希望它能够根据我在该列中的任何单元格中输入的金额进行计算,并且只计算我当前正在更新的单元格。我认为这与getActiveRange或其他东西有关,但我对这些方法不够熟悉。

编辑:经过测试,第3行第14列似乎也反映了partnerOnePaySource*partnerOnePercent的计算,PaySource来自第3行的第13列(M3(,但我不确定原因。

大家好,在阅读了我的代码后,我意识到如何在PaySource变量中使用getActiveCell方法。

var partnerOnePercent = sheet.getRange("G2").getValue();
var partnerOnePaySource = ss.getActiveCell().getValue();
var partnerTwoPercent = sheet.getRange("G3").getValue();
var partnerTwoPaySource = ss.getActiveCell().getValue();
var partnerThreePercent = sheet.getRange("G4").getValue();
var partnerThreePaySource = ss.getActiveCell().getValue();

有了这个,我能够解决我的问题,现在它起作用了。

最新更新