Имя: Пароль:
IT
 
Как проще всего преобразовать номер столбца Excel в букву столбца?
0 wormselfish
 
08.11.16
18:00
Столбцы в таблице нумеруются буквыми так: A, B, C, ... Y, Z, AA, AB, AC, ... и т.д.

Задача оптимальным способом по номеру столбца получить его букву. Например:

0 => A
25 => Z
99 => ?

На любом языке программирования.
1 разработчик 1с
 
08.11.16
18:17
целое от деления на 25, потом остаток от деления
через кейс определить буквы
2 Мойдодыр
 
08.11.16
18:20
Это называется перевод в другую систему счисления
3 wormselfish
 
08.11.16
19:15
:)

Ну. Кто первый догадается?
4 Живой Ископаемый
 
08.11.16
19:17
а.. то есть тут призы?
5 МихаилМ
 
08.11.16
19:30
(0)
системы счисления на информатике в школе проходят.
Вам на подростковый форум.
6 Torquader
 
08.11.16
20:29
Система счисления с переменной базой - младший разряд 26, а остальные - 27.
7 romix
 
08.11.16
20:36
В цикле заполнить соответствие...
8 Garykom
 
гуру
08.11.16
20:42
(6) ТС просто скосячил, в екселе нумерация с 1 а не с 0, так что никакой переменной базы
9 Serginio1
 
08.11.16
21:41
http://catalog.mista.ru/public/544232/
Можно получить индекс зная смещение символа 64 относительно 1 и 26 разрядную систему
10 Serginio1
 
08.11.16
21:43
Или можно заполнить колонки

Функция ЗаписатьКолонки(Колонки,НачСтр,Разряд,КоличествоРазрядов,Сравнивать,ПоследняяКолонка)
// Процедура создает колонки которые меньше или равны имени последней колоки
// A,B,..,AA..ABC
    Для сч=КодСимвола("A") по  КодСимвола("Z") Цикл
        НовСтр=НачСтр+Символ(сч);
        
        Если  Разряд<КоличествоРазрядов Тогда
            рез= ЗаписатьКолонки(Колонки,НовСтр,Разряд+1,КоличествоРазрядов,Сравнивать,ПоследняяКолонка);
            Если Сравнивать и Рез Тогда
                возврат истина
            КонецЕсли;    
        Иначе
            Колонки.Добавить(НовСтр,ОписаниеСтроки());
            
            Если Сравнивать и НовСтр=ПоследняяКолонка Тогда
                возврат  истина
            КонецЕсли
        КонецЕсли;
    КонецЦикла;
    
    
    возврат ложь;
КонецФункции

Процедура СоздатьКолонки(Колонки,ПоследняяКолонка)
    
    // Создадим колонки учитывая разряды
    // Например если имя последней колоки ABC то колонки идут по разрядно
    //A..Z
    //AA..ZZ
    //AAA..ABC
    КоличествоРазрядов=СтрДлина(ПоследняяКолонка);
    
    Для сч=1 По  КоличествоРазрядов Цикл
        Сравнивать=сч=КоличествоРазрядов;
        рез= ЗаписатьКолонки(Колонки,"",1,сч,Сравнивать,ПоследняяКолонка);
        Если Сравнивать и рез Тогда
            возврат;
        КонецЕсли;    
    КонецЦикла;    
КонецПроцедуры
11 wormselfish
 
08.11.16
23:05
Пока правильного ответа нет. Если не считать (10), так как он громоздкий.
12 Yuri 83
 
08.11.16
23:47
лТЗн.Колонки.Получить(Индекс).Имя?
13 Serginio1
 
09.11.16
00:08
http://stackoverflow.com/questions/181596/how-to-convert-a-column-number-eg-127-into-an-excel-column-eg-aa

private string GetExcelColumnName(int columnNumber)
{
    int dividend = columnNumber;
    string columnName = String.Empty;
    int modulo;

    while (dividend > 0)
    {
        modulo = (dividend - 1) % 26;
        columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
        dividend = (int)((dividend - modulo) / 26);
    }

    return columnName;
}
14 wormselfish
 
09.11.16
04:09
(13) Нагуглил. И все равно громоздко, хотя и правильно. Но у меня короче получилось
15 Adilgeriy
 
09.11.16
05:15
А переключит нумерацию столбов в экселе почему не хочешь?
16 Garykom
 
гуру
09.11.16
06:30
Зная что есть ограничение на кол-во столбцов в екселе можно в одну строчку записать, но науя?
17 Рэйв
 
09.11.16
06:38
(0)А зачем? есксель и цифры прекрасно понимает.Да они  наглядне
18 Feunoir
 
09.11.16
08:16
(16) Ограничение столбцов в последних версиях Excel - 16384. Точно одной строкой получится?
19 Garykom
 
гуру
09.11.16
08:25
(18) угу всего то максимум 3 буковки
20 NikVars
 
09.11.16
09:51
(0) СТОЛБЕЦ

См. также

Возвращает номер столбца по заданной ссылке.

Синтаксис

СТОЛБЕЦ(ссылка)

Ссылка   — это ячейка или интервал ячеек, для которых определяется номер столбца.

Если ссылка опущена, то предполагается, что это ссылка на ячейку, в которой находится сама функция СТОЛБЕЦ.

Если ссылка является интервалом ячеек, и если функция СТОЛБЕЦ введена как горизонтальный массив, то функция СТОЛБЕЦ возвращает номера столбцов в ссылке в виде горизонтального массива.

Ссылка не может ссылаться на несколько областей.

Пример

Чтобы этот пример проще было понять, скопируйте его на пустой лист.

Показать Инструкции

Создайте пустую книгу или лист.
Выделите пример в разделе справки. Не выделяйте заголовок строки или столбца.
Выделение примера в справке.

Выделение примера в справке.

Нажмите сочетание клавиш CTRL+C
На листе выделите ячейку A1 и нажмите сочетание клавиш CTRL+V.
Чтобы переключиться между просмотром результатов и просмотром формул, возвращающих эти результаты, нажмите сочетание клавиш CTRL+` (апостроф) или в меню Сервис укажите на пункт Зависимости формул и выберите режим Режим проверки формул.
  
1
2
3
A B
Формула Описание (результат)
=СТОЛБЕЦ() Столбец в котором отображается формула (1)
=СТОЛБЕЦ(A10) Столбец ссылки (1)
21 wormselfish
 
09.11.16
17:35
(20) Чувак!
Ну все молодцы. Кроме некоторых. Темку можно закрыть ;)
22 Злопчинский
 
09.11.16
17:38
фигня какая.
давайте-ка решим здачу красиво БЕЗ ЭКСЕЛЯ
23 Garykom
 
гуру
09.11.16
17:43
(21) "Мариуполь, Европа"
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан