无法使用 if 语句比较运行 2 个循环的 2 列来填充列

问题描述 投票:0回答:1

Google 应用脚本和工作表脚本的新功能*

我有 3 列数据:

  • 第一个是第二列的数字表示,其中包含 52631 行长的名称,
  • 第三个就像我需要与第二个进行比较的名称列表,如果两者相同,我需要将同一行中的数字放入新的第 4 列中。第 3 列有 52631 行长。

我到处修复和学习了几个小时,但无法让它发挥作用。

示例:

数字 独特的名字 名字 结果(我需要做的)
1 你好 2
2 你好 晚安
3 早上 下午
4 美好的一天 夜晚
1
你好 2
早上 3

这是我到目前为止得到的:

function addLogNumber() {

  var range = SpreadsheetApp.getActiveSheet().getActiveRange();
  
  for (var i = 1; i <= 52631; i++) {//loop for third column

    for (var j = 1; j <= 3209; j++) {//loop for second column

      var tabelaSis = range.getCell(3,i).getValue();//third column
      var nomeLog = range.getCell(2,j).getValue();//second column
      var codLog = range.getCell(1,j).getValue();//first column
      
        if(tabelaSis==nomeLog){
          range.getCell(i,4).setValue(codLog);
          break;
        }
    }
  }
}
google-sheets google-apps-script google-sheets-formula
1个回答
0
投票

使用循环比较 2 个单元格

我修改并删除了一些代码,

.getActiveRange();
将返回活动单元格的位置,并且我还删除了另一个for循环。如果第二列与第三列匹配,则第四列将输入第一列的编号,根据我对您问题的理解,这就是结果。

示例输出: Sample Output

示例代码:

function addLogNumber() {

  const range = SpreadsheetApp.getActiveSheet();

  const unique = range.getRange(2,2,range.getLastRow()).getValues().flat();
  const name = range.getRange(2,3,range.getLastRow()).getValues().flat().filter(n => n);

  for (let i = 0; i < name.length; i++){
    unique.includes(name[i]) ? range.getRange(i + 2, 4).setValue(unique.indexOf(name[i]) + 1) : null;
  }
}

参考:

© www.soinside.com 2019 - 2024. All rights reserved.