Len*_*rtB 23 row-number google-docs google-sheets google-apps-script
员工表包含单元格C2中员工的姓名.员工的姓名也应该在B3:B153范围内的数据表中.
如何在数据表中获取与员工姓名匹配的单元格的rownumber?
我尝试了以下脚本,但它似乎不起作用.
var Sheet = SpreadsheetApp.getActive();
var Employeesheet = Sheet.getSheetByName('Employee')
var DataSheet = Sheet.getSheetByName('Data');
var Column = Sheet.getRange(3,2,151,1);
var Values = column.getValues();
var Row = 0;
while ( Values[Row] && Values[Row][0] !=(EmployeeSheet.getRange(2,3,1,1).getValue()) ) {
Row++;
}
if ( Values[Row][0] === (EmployeeSheet.getRange(2,3,1,1).getValue()) )
return Row+1;
else
return -1;
}
Run Code Online (Sandbox Code Playgroud)
St3*_*3ph 39
这里的代码
function rowOfEmployee(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var employeeName = sheet.getRange("C2").getValue();
for(var i = 0; i<data.length;i++){
if(data[i][1] == employeeName){ //[1] because column B
Logger.log((i+1))
return i+1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当您想要执行这种查找时,最好使用sheet.getDataRange().getValues()检索数据,因为在这种情况下,您将获取数据作为值表,这样更快.当您使用标准的EmployeeSheet.getRange(2,3,1,1).getValue()时,实际上您检索的对象需要更多时间进行处理,并且每次查询电子表格时.
在我的例子中,我只做了一个查询来检索所有数据而不是n查询每次检索一个数据.
斯特凡
Cha*_*tos 15
我今天遇到了这个问题,我找到了一种本地方法来完成这项工作。
这是测试它是否适合您的代码段:
var spreadsheet = SpreadsheetApp.getActive();
var tosearch = "your text to search";
var tf = spreadsheet.createTextFinder(tosearch);
var all = tf.findAll();
for (var i = 0; i < all.length; i++) {
Logger.log('The sheet %s, cell %s, has the value %s.', all[i].getSheet().getName(), all[i].getA1Notation(), all[i].getValue());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44939 次 |
| 最近记录: |