首页 > 解决方案 > 根据单元格值显示或隐藏多行

问题描述

我正在尝试创建一个电子表格,该电子表格根据某个单元格 (B2) 值隐藏行。

我遇到问题,有时我的代码不适用于某些 if 语句,但适用于其他语句。例如,“Kombucha”和“Koji” if 语句不起作用,但“Sweet Fermentation”可以。

电子表格在这里,下面是我的代码:

function onEdit2(e) {
var sh=e.range.getSheet();
var acid=[4, 6, 8];
if(sh.getName()=='Master' && e.range.columnStart==2 && e.range.rowStart==2) {
e.source.toast(e.value);
if(e.value=="Acid") {
  sh.hideRows(12,73);
  sh.hideRows(33,52);
  sh.hideRows(53,72);
  sh.hideRows(73,84);
  sh.showRows (9,11);
}
if(e.value=="Kombucha") {
  sh.hideRows(53,72);
}
 if(e.value=="Koji") {
  sh.hideRows(12,32);
}
  if(e.value=="Sweet Fermentation") {
  sh.hideRows(12,61);
}
else{
  sh.showRows(1,32);
  sh.showRows(33,52);
  sh.showRows(53,72);
  sh.showRows(73,84);
}
if(e.value=="All"){
  sh.showRows (1,100)
   }
 }  
}

非常感谢你的帮助。我对 Javascript 非常熟悉,并且想学习为我的公司制作更好的电子表格。

标签: google-apps-scriptgoogle-sheets

解决方案


尝试这个:

function onMyEdit(e) {
  e.source.toast(e.value);
  var sh = e.range.getSheet();
  
  if (sh.getName() == 'Sheet0' && e.range.columnStart == 2 && e.range.rowStart == 2) {
    e.source.toast('cond')
    if (e.value == "Acid") {
      sh.hideRows(3, 8);
    }
    if (e.value == "Kombucha") {
      sh.hideRows(12, 10);
    }
    if (e.value == "Koji") {
      sh.hideRows(23, 10);
    }
    if (e.value == "All") {
      sh.showRows(1, 100)
    }
  }
}

这些都没有重叠,所以很容易看出它是如何工作的。你遇到的问题是关于甜发酵的 else 子句总是显示你试图从上面隐藏的行。

function onMyEdit(e) {
  e.source.toast(e.value);
  var sh = e.range.getSheet();
  
  if (sh.getName() == 'Sheet0' && e.range.columnStart == 2 && e.range.rowStart == 2) {
    e.source.toast('cond')
    if (e.value == "Acid") {
      sh.hideRows(3, 8);
    }
    if (e.value == "Kombucha") {
      sh.hideRows(12, 10);
    }
    if (e.value == "Koji") {
      sh.hideRows(23, 52);
    }
    if(e.value == "Sweet Fermentation") {
      sh.hideRows(75,25)
    } else {
      sh.showRows(75,25);
    }
    if (e.value == "All") {
      sh.showRows(1, 100)
    }
  }
}

推荐阅读