Google sheets 解函数更好的解
我有一个电子表格,其中许多单元格乘以一个常量值并相加,结果(SOLL)与预期(IST)值不同,我能找到的唯一方法是进行10次迭代,每次修改常量值,直到SOLL和IST相当相等。 我的方法看起来太愚蠢了,我只是在问一个漂亮而聪明的方法来解决它 谢谢Google sheets 解函数更好的解,google-sheets,Google Sheets,我有一个电子表格,其中许多单元格乘以一个常量值并相加,结果(SOLL)与预期(IST)值不同,我能找到的唯一方法是进行10次迭代,每次修改常量值,直到SOLL和IST相当相等。 我的方法看起来太愚蠢了,我只是在问一个漂亮而聪明的方法来解决它 谢谢 function costante() { var ss = SpreadsheetApp.getActiveSpreadsheet(); //spreadsheet "options" SpreadsheetApp.setActiveSheet
function costante()
{
var ss = SpreadsheetApp.getActiveSpreadsheet(); //spreadsheet "options"
SpreadsheetApp.setActiveSheet(ss.getSheets()[0]); //sheet nr.1
var sheet = SpreadsheetApp.getActiveSheet();
for(var i=0; i<10; i++){
var dataRange = sheet.getRange("o5:o5"); //marge ist
var mist = dataRange.getValues();
var dataRange = sheet.getRange("o4:o4"); //marge soll
var msoll = dataRange.getValues();
var dataRange = sheet.getRange("n1:n1"); //costante
var costante = dataRange.getValues();
var minus = 1;
if(mist - msoll < 0) { minus = -1};
costante = mist / msoll * minus * costante;
sheet.getRange("n1:n1").setValues([[costante]]);}
}
函数costante()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();//电子表格“选项”
电子表格app.setActiveSheet(ss.getSheets()[0]);//第1页
var sheet=SpreadsheetApp.getActiveSheet();
对于(var i=0;i可能是您想要的,假设您的“大量单元格”在A1:A10中,并且IST
值在E1中为:
=E1/sum(A1:A10)
但是请注意标签。谢谢,我首先对这个简单的方法感到惊讶,我检查了一下:
10个值加起来等于10(和(a1:a10))
我想要的IST值是500(E1)
E1/总和(A1:A10)=500/10=50=C(成本)
E1=总和(A1:A10)x C
如果我用50乘以每个A(y)值,我有500,建议的公式将非常有效
但是我忘了提到A(y)的值是已经包含我的成本的公式,这意味着实际上每个A(y)值都是一个包含C的公式
E1=总和(A(y)x C)x C
a) 因此,提出的解决方案没有给出所需的值,我不得不重复计算约10次
b) 我还增加了1秒的延迟,因为我不确定电子表格是否能够如此快速地计算(请告诉我是否有必要)
c) 我说如果结果是预期值的+/-2,停下来计算
它可以工作,但仍然不漂亮
function costante()
{
var ss = SpreadsheetApp.getActiveSpreadsheet(); //spreadsheet "options"
SpreadsheetApp.setActiveSheet(ss.getSheets()[0]); //sheet nr.1
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange("o5:o5"); //marge ist
var mist = dataRange.getValues();
for(var i=0; i<20; i++)
{
var dataRange = sheet.getRange("o4:o4"); //marge soll
var msoll = dataRange.getValues();
var dataRange = sheet.getRange("n1:n1"); //costante
var costante = dataRange.getValues();
var diff = msoll - mist;
if(diff < -2) { costante = costante * 1.005;}
else if (diff > 2) { costante = costante * 0.995;}
else {return;}
sheet.getRange("n1:n1").setValues([[costante]]);
Utilities.sleep(1000); //wait 1.5sec
}
}
函数costante()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();//电子表格“选项”
电子表格app.setActiveSheet(ss.getSheets()[0]);//第1页
var sheet=SpreadsheetApp.getActiveSheet();
var dataRange=sheet.getRange(“o5:o5”);//marge ist
var mist=dataRange.getValues();
对于(var i=0;i2){costante=costante*0.995;}
else{return;}
sheet.getRange(“n1:n1”).setValue([[costante]]);
实用程序。睡眠(1000);//等待1.5秒
}
}