根据另一列中的字符串中的数据查找行号

Find a row number based on data from a string in another column

本文关键字:数据 字符串 查找 一列      更新时间:2023-09-26

我有一个在不同列中有一些用户详细信息的表,在最后一列"G"中,我有一个唯一的ID,这是字符串'UID',我想迭代每一行,直到它在列G中找到UID,然后我需要它返回该用户的行号。

我从不同的教程和答案中挑选了不同的部分,得出了下面的结论。我试过调试,它一直返回0.0的行。

有用户没有唯一的id,这可能是问题吗?

任何想法?

var data = getQueryString("?"+claim_code);
var UID = data.uniqueid;
Logger.log(UID);
// Find out the row from the UID
var column = response.getRange('G:G');
var values = column.getValues();
var row = 0;
while ( values[row][0] == UID ) {
  row++;
Logger.log(row);
}

您只需要对值执行while语句并使用!=因为这样,它将遍历您的值,直到找到您正在查看的行。顺便说一句,您可能希望将范围限制为您拥有的特定行数。它将比当前的G:G运行得快得多,因为它会在所有行上运行。下面是为您查找值的代码:

while ( values[row] != UID ) {
  row++;
  Logger.log(row); 
}

你可以得到表格的所有值,然后迭代每一行来找到你的值:示例如下:https://docs.google.com/spreadsheets/d/1LGv_u_z_DuUpW01o8yMpHkceM3N45G3ruqQ8JtHkNEs

function find(){
  var idToFind = "A12347";
  var userRow = findID(idToFind);
  Logger.log(userRow);
}
function findID(userID) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var values = sheet.getSheetValues(2, 1, sheet.getLastRow()-1, sheet.getLastColumn());
  for(var x=1; x<values.length; x++){
    if(userID == values[x][6]){
      return x;
    }
  }
  return 0; // Error, not found userID
}