Cooper编写了以下onEdit脚本,用于在从下拉列表中选择列标题名称时对列进行排序:
//Dropdown List sort Events/Incidents
function sortByColumnEventsIncidents(e) {
const sh=e.range.getSheet();
if(sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value) {
const headerArray=sh.getRange(2,1,1,sh.getLastColumn()).getValues()[0];
const col={};
headerArray.forEach(function(h,i){col[h]=i+1;});
const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn());
rg.sort({column:col[e.value],ascending:false});
sh.getRange('A3').activate();
}
}
这工作得很好,但是我现在想根据从下拉列表中选择的列标题名称来更改升序真/假标准。因此,我修改了脚本,目的是当从下拉列表中选择“分支”、“报告者”或“雇员”时,所选列将按升序排序,但如果选择了任何其他标题名称,我希望这些标题名称按降序排序。这是我修改的脚本,但我不能让它发挥作用:
//Dropdown List sort Events/Incidents
function sortByColumnEventsIncidents(e) {
const sh=e.range.getSheet();
if(sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value=='Employee' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value=='Reported by' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value=='Branch') {
const headerArray=sh.getRange(2,1,1,sh.getLastColumn()).getValues()[0]; //Location of Header row
const col={};
headerArray.forEach(function(h,i){col[h]=i+1;});
const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn()); //Range to sort
rg.sort({column:col[e.value],ascending:true});
sh.getRange('A3').activate();
}
if(sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value!=='Employee' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value!=='Reported by' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value!=='Branch') { //Location of Dropdown = E1
const headerArray=sh.getRange(2,1,1,sh.getLastColumn()).getValues()[0]; //Location of Header row
const col={};
headerArray.forEach(function(h,i){col[h]=i+1;});
const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn()); //Range to sort
rg.sort({column:col[e.value],ascending:false});
}
}
在其他工作表中,我已经能够修改代码并使其在我设置了一个标准的情况下运行,例如,如果等于“分支”,则按升序排序,如果不等于“分支”,则按降序排序,但当我设置多个标准时,我无法使其工作。
如果能帮我把这件事做好,我将不胜感激。
试试这个:
function sortByColumnEventsIncidents(e) {
const sh=e.range.getSheet();
const sA=["Employee","Report by","Branch"];
if(sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1) {
const headerArray=sh.getRange(2,1,1,sh.getLastColumn()).getValues()[0];
const col={};
headerArray.forEach(function(h,i){col[h]=i+1;});
const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn());
if(sA.indexOf(e.value)!=-1) {
rg.sort({column:col[e.value],ascending:true});
sh.getRange('A3').activate();
}else{
rg.sort({column:col[e.value],ascending:false});
}
}
}
有可能做如下事情吗: 或者: 我知道用很多if-else语句也可以实现同样的目标,但如果它像上面那样工作,看起来会更干净。
问题内容: 我有一些话题要讨论。我有一个24 s / s的代码片段。是我自己的类,表示类似于的功能。 这是一段代码: 从可读性的角度来看,我有些担心。将其更改为24类并使用多态性更好吗?我不相信这将使我的代码可维护…一方面,这些s很清楚,应该很容易理解,另一方面,s太多了。 我的问题相当笼统,但是我正在用Python编写代码,所以我不能使用。 你怎么看? 更新 : 重要的一点是,并且是构造函数,我
我有一些话题要讨论。我有一个24s/s的代码片段。是我自己的类,它表示类似于的功能。 这是一段代码: 我从可读性的角度考虑。是否最好将其更改为24个类并使用多态性?我不相信它会使我的代码可维护。。。一方面,那些if很清楚,应该不难理解,另一方面,if太多了。 我的问题相当笼统,但是我用Python编写代码,所以我不能使用像switch这样的构造。 你觉得呢? 更新: 一件重要的事情是、和是构造函数
下面的代码确实可以按照我需要的方式工作,但是它很难看、太多或者其他一些事情。我看过一些公式,并试图写出一些解决方案,但最终得到的是类似数量的语句。 在这种情况下,有没有一种数学公式对我有利,或者16个if语句是可以接受的? 解释一下代码,这是一种同时回合制游戏。两个玩家各有四个动作按钮,结果来自一个数组(0-3),但如果这有帮助,变量'one'和'two'可以赋值任何值。结果是,0=两个都不赢,1
问题内容: 我只是想知道下面的if语句是否有效: 我的目标是确保同时满足以下2个要求:1. value [6]必须位于目标2.目标中的value [0]或value [1]如果我做了一个不好的例子,请道歉我的问题是,是否可以在一个语句中进行三个AND&OR?非常感谢! 问题答案: 使用 括号 将条件分组: 请注意,如果将定义为一组,则可以在固定时间内进行查找: 并且,正如@Pramod在评论中提到
问题内容: 以下工作-拒付金额等于1时返回Y,否则默认为N 但是我似乎无法使这一工作正常?语法有效吗 问题答案: 大概这可以工作: