Как узнать, какой буквой будет называться 26 столбик в Excel
Как все мы знаем "буквенная нумерация" столбиков в Excel имеет интересный вид первые 25 столбиков называются латинскими большими буквами A...Z потом буквы закачиваются и 26 столбик называется AA, 27 AB итд такая вот 25-тиичная система исчисления из букв латинского алфавита.
Мне нужно написать функцию, которая по номеру столбика возвращала его буквенное наименование с первыми 25 легко function f(i) { i=i+65; alert(String.fromCharCode(i)); } f(25) а как дальше? как мне получить название 26 столбика "AA" итд то есть нужно десятичную систему исчисления перевести в 25-тиичную из букв |
Деление по модулю на базу.
|
MallSerg,
если долго мучатся ... ))) function excelTitle(index) { let title = '', up = "A".charCodeAt(0); while (index >= 0) { title = String.fromCharCode(index % 26 + up) + title; index = index / 26 | 0; index -= 1; } return title } //как мне получить название 26 столбика "AA" итд let index = 26; alert(excelTitle(index)); |
Цитата:
|
Цитата:
не знал про это % (Modulus) Бинарная операция. Возвращает целочисленный остаток от деления двух операндов. 12 % 5 возвращает 2. И еще не понял зачем | 0; в пятой строке. Это означает "или ноль?" в каком случае это сработает? А, это округлить до целых.... как удобно то... |
Больше похвалиться некому. Написал функцию наоборот. По названию столбца Excel его порядковый номер
function excelInd(Ind) { let title = Ind.split('').reverse(); let i = 0; let rez=0; let alrez=0; while (i < title.length) { rez=(title[i].codePointAt(0)-64)*26**i; if(i==0){rez=rez-1}; alrez=alrez+rez; i++; } return alrez }; alert(excelInd("AA") ); пока писал забыл, зачем я это делал... |
sovsem-nub,
:) function excelInd(title) { title = title.toUpperCase(); let up = "A".charCodeAt(0) - 1, index = 0; for(letter of title) { index *= 26; index += letter.charCodeAt(0) - up } return --index } alert(excelInd('aa')) |
Похоже разобрались =).
|
Часовой пояс GMT +3, время: 11:51. |