Google 应用脚本和工作表脚本的新功能*
我有 3 列数据:
我到处修复和学习了几个小时,但无法让它发挥作用。
示例:
数字 | 独特的名字 | 名字 | 结果(我需要做的) |
---|---|---|---|
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;
}
}
}
}
我修改并删除了一些代码,
.getActiveRange();
将返回活动单元格的位置,并且我还删除了另一个for循环。如果第二列与第三列匹配,则第四列将输入第一列的编号,根据我对您问题的理解,这就是结果。
示例代码:
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;
}
}
参考: