Google sheets 解函数更好的解

Google sheets 解函数更好的解,google-sheets,Google Sheets,我有一个电子表格,其中许多单元格乘以一个常量值并相加,结果(SOLL)与预期(IST)值不同,我能找到的唯一方法是进行10次迭代,每次修改常量值,直到SOLL和IST相当相等。 我的方法看起来太愚蠢了,我只是在问一个漂亮而聪明的方法来解决它 谢谢 function costante() { var ss = SpreadsheetApp.getActiveSpreadsheet(); //spreadsheet "options" SpreadsheetApp.setActiveSheet

我有一个电子表格,其中许多单元格乘以一个常量值并相加,结果(SOLL)与预期(IST)值不同,我能找到的唯一方法是进行10次迭代,每次修改常量值,直到SOLL和IST相当相等。 我的方法看起来太愚蠢了,我只是在问一个漂亮而聪明的方法来解决它

谢谢

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秒
}                                              
}