Google sheets ';同步';谷歌电子表格中的单元格值相互依赖

Google sheets ';同步';谷歌电子表格中的单元格值相互依赖,google-sheets,Google Sheets,假设我有三个单元格,一个包含距离,一个包含速度,另一个包含时间。现在,我希望能够填写两个单元格(例如距离和速度),并在第三个单元格中计算时间。但是当我填写速度和时间时,应该计算距离 如何在谷歌电子表格中实现这一点?我认为应该进行某种检查,以避免创建无限循环。我试图搜索单元格同步或单元格依赖项,但我认为这不是解决此问题的正确术语。您可以使用嵌套的if语句: =if(And(isnumber(A2),isnumber(C2)),ROUND(A2/C2),if(And(isnumber(A2),isn

假设我有三个单元格,一个包含距离,一个包含速度,另一个包含时间。现在,我希望能够填写两个单元格(例如距离和速度),并在第三个单元格中计算时间。但是当我填写速度和时间时,应该计算距离


如何在谷歌电子表格中实现这一点?我认为应该进行某种检查,以避免创建无限循环。我试图搜索单元格同步或单元格依赖项,但我认为这不是解决此问题的正确术语。

您可以使用嵌套的if语句:

=if(And(isnumber(A2),isnumber(C2)),ROUND(A2/C2),if(And(isnumber(A2),isnumber(B2)),round(A2/B2),if(and(isnumber(B2),isnumber(C2)),B2*TIMEVALUE(C2)*24,)))
以下是所有三个场景的屏幕截图:


您可以使用嵌套的if语句执行此操作:

=if(And(isnumber(A2),isnumber(C2)),ROUND(A2/C2),if(And(isnumber(A2),isnumber(B2)),round(A2/B2),if(and(isnumber(B2),isnumber(C2)),B2*TIMEVALUE(C2)*24,)))
以下是所有三个场景的屏幕截图:


您可以使用
OnEdit
事件:

  • 用户输入一些值(速度、行、距离)
  • 脚本检查其他值
  • 计算结果
  • 将结果粘贴到单元格中
  • 脚本全文如下:

    函数onEdit(t){
    var workSheetName='Sheet1';//将工作表名称更改为您的工作表名称
    var distanceRangeAddress='A2:A';//如果需要,请更改
    var speedRangeAddress='B2:B';//如果需要,请更改
    var timeRangeAddress='C2:C';//如果需要,请更改
    var ss=SpreadsheetApp.getActiveSheet();
    var sn=ss.getName();
    距离、速度、时间;
    如果(sn==工作表名称){
    var-tr=t.range;
    if(t.oldValue!=tr.getValue()&&tr.getNumColumns()==1&&tr.getNumRows()==1){
    //距离
    var myr=ss.getRange(distanceRangeAddress);
    if(量程(tr,myr)){
    距离=tr.getValue();
    速度=tr.offset(0,1).getValue();
    time=tr.offset(0,2).getValue();
    如果(时间>0){
    速度=距离/时间;
    tr.偏移量(0,1).设定值(时间);
    返回;
    }        
    如果(速度>0){
    时间=距离/速度;
    tr.偏移量(0,2).设定值(时间);
    返回;
    }
    }
    //速度
    myr=ss.getRange(speedRangeAddress);
    if(RangeIntersect(tr,myr)){
    速度=tr.getValue();
    距离=tr.offset(0,-1).getValue();
    time=tr.offset(0,1).getValue();
    如果(时间>0){
    距离=速度*时间;
    tr.偏移量(0,-1).设定值(距离);
    返回;
    }        
    如果(距离>0){
    时间=距离/速度;
    tr.偏移量(0,1).设定值(时间);
    返回;
    }
    } 
    //时间
    myr=ss.getRange(timeRangeAddress);
    if(量程(tr,myr)){
    时间=tr.getValue();
    距离=tr.offset(0,-2).getValue();
    速度=tr.offset(0,-1).getValue();
    如果(速度>0){
    距离=速度*时间;
    tr.偏移量(0,-2).设定值(距离);
    返回;
    }
    如果(距离>0){
    速度=距离/时间;
    tr.偏移量(0,-1).设定值(速度);
    返回;
    }
    }
    }
    }
    }
    函数范围相交(R1,R2){
    var LR1=R1.getLastRow();
    var Ro2=R2.getRow();
    如果(LR1}
    您可以使用
    OnEdit
    事件:

  • 用户输入一些值(速度、行、距离)
  • 脚本检查其他值
  • 计算结果
  • 将结果粘贴到单元格中
  • 脚本全文如下:

    函数onEdit(t){
    var workSheetName='Sheet1';//将工作表名称更改为您的工作表名称
    var distanceRangeAddress='A2:A';//如果需要,请更改
    var speedRangeAddress='B2:B';//如果需要,请更改
    var timeRangeAddress='C2:C';//如果需要,请更改
    var ss=SpreadsheetApp.getActiveSheet();
    var sn=ss.getName();
    距离、速度、时间;
    如果(sn==工作表名称){
    var-tr=t.range;
    if(t.oldValue!=tr.getValue()&&tr.getNumColumns()==1&&tr.getNumRows()==1){
    //距离
    var myr=ss.getRange(distanceRangeAddress);
    if(量程(tr,myr)){
    距离=tr.getValue();
    速度=tr.offset(0,1).getValue();
    time=tr.offset(0,2).getValue();
    如果(时间>0){
    速度=距离/时间;
    tr.偏移量(0,1).设定值(时间);
    返回;
    }        
    如果(速度>0){
    时间=距离/速度;
    tr.偏移量(0,2).设定值(时间);
    返回;
    }
    }
    //速度
    myr=ss.getRange(speedRangeAddress);
    if(RangeIntersect(tr,myr)){
    速度=tr.getValue();
    距离=tr.offset(0,-1).getValue();
    time=tr.offset(0,1).getValue();
    如果(时间>0){
    距离=速度*时间;
    tr.偏移量(0,-1).设定值(距离);
    返回;
    }        
    如果(距离>0){
    时间=距离/速度;
    tr.偏移量(0,1).设定值(时间);
    返回;
    }
    } 
    //时间
    myr=ss.getRange(timeRangeAddress);
    if(量程(tr,myr)){
    时间=tr.getValue();
    距离=tr.offset(0,-2).getValue();
    速度=tr.offset(0,-1).getValue();
    如果(速度>0){
    距离=速度*时间;
    tr.偏移量(0,-2).设定值(距离);
    返回;
    }
    如果(距离>0){
    速度=距离/时间;
    tr.偏移量(0,-1).设定值(速度);
    返回;
    }
    }
    }
    }
    }
    函数范围相交(R1,R2){
    var LR1=R1.getLastRow();
    var Ro2=R2.getRow();
    如果(LR1