Как узнать, какой буквой будет называться 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, время: 18:42. |