Last active
November 4, 2022 02:06
-
-
Save mark05e/29bb2b7564460059da6d3e74f08ab31f to your computer and use it in GitHub Desktop.
Google AppScript - Find cell by value
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// original: https://stackoverflow.com/questions/9905533/convert-excel-column-alphabet-e-g-aa-to-number-e-g-25 | |
// updated: https://gist.github.com/mark05e/29bb2b7564460059da6d3e74f08ab31f | |
function find(value, range) { | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = range.split("!")[0]; | |
var A1Ref = range.split("!")[1]; | |
var [cellStart, cellEnd] = A1Ref.split(":") | |
var rowStartNumber = Number(cellStart.replace(/[^0-9]/g,'')) | |
var rowEndNumber = Number(cellEnd.replace(/[^0-9]/g,'')) | |
var colStart = cellStart.replace(/[^A-Za-z]/g,'') | |
var colStartNumber = Number(lettersToNumber(colStart)) | |
var colEnd = cellEnd.replace(/[^A-Za-z]/g,'') | |
var colEndNumber = Number(lettersToNumber(colEnd)) | |
var searchRange = ss.getSheetByName(sheet).getRange(A1Ref); | |
var searchData = searchRange.getValues(); | |
for (var i = 0; i < searchData.length; i++) { | |
for (var j = 0; j < searchData[i].length; j++) { | |
if (searchData[i][j] == value) { | |
return (ss.getSheetByName(sheet).getRange(rowStartNumber + i, colStartNumber + j).getA1Notation()); | |
} | |
} | |
} | |
return null; | |
} | |
// https://stackoverflow.com/questions/9905533/convert-excel-column-alphabet-e-g-aa-to-number-e-g-25 | |
function lettersToNumber(letters){ | |
for(var p = 0, n = 0; p < letters.length; p++){ | |
n = letters[p].charCodeAt() - 64 + n * 26; | |
} | |
return n; | |
} | |
function testFind(name) { | |
let x = find("Region1","Sheet1!C3:C14") | |
console.log(x) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment