Skip to content

Instantly share code, notes, and snippets.

@suchy
Created September 20, 2023 23:31
Show Gist options
  • Save suchy/b46b18d70b7bf67444914d40eaea37f3 to your computer and use it in GitHub Desktop.
Save suchy/b46b18d70b7bf67444914d40eaea37f3 to your computer and use it in GitHub Desktop.
const maxLetterInSegmentNumber = 26;
module.exports.getColumnNumber = function getColumnNumber(columnName) {
const letters = columnName.toUpperCase().split("");
const columnNumber = letters.reduce((columnNumber, letter, index) => {
const reverseIndex = letters.length - 1 - index;
const letterNumber = getLetterNumber(letter);
if (reverseIndex === 0) {
return columnNumber + letterNumber;
}
return (
columnNumber +
(letterNumber + 1) * Math.pow(maxLetterInSegmentNumber, reverseIndex)
);
}, 0);
return columnNumber;
};
function getLetterNumber(letter) {
const differenceBetweenAsciiAndAlphabetStart = 65;
return letter.charCodeAt(0) - differenceBetweenAsciiAndAlphabetStart;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment