Вход | Регистрация


Информационные технологии :: Математика и алгоритмы

Как проще всего преобразовать номер столбца Excel в букву столбца?

Как проще всего преобразовать номер столбца Excel в букву столбца?
Я
   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
Это называется перевод в другую систему счисления
   wormselfish
 
3 - 08.11.16 - 19:15
:)

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

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

Процедура СоздатьКолонки(Колонки,ПоследняяКолонка)
    
    // Создадим колонки учитывая разряды
    // Например если имя последней колоки ABC то колонки идут по разрядно
    //A..Z
    //AA..ZZ
    //AAA..ABC
    КоличествоРазрядов=СтрДлина(ПоследняяКолонка);
    
    Для сч=1 По  КоличествоРазрядов Цикл
        Сравнивать=сч=КоличествоРазрядов;
        рез= ЗаписатьКолонки(Колонки,"",1,сч,Сравнивать,ПоследняяКолонка);
        Если Сравнивать и рез Тогда
            возврат;
        КонецЕсли;    
    КонецЦикла;    
КонецПроцедуры
 
 Рекламное место пустует
   wormselfish
 
11 - 08.11.16 - 23:05
Пока правильного ответа нет. Если не считать (10), так как он громоздкий.
   Yuri 83
 
12 - 08.11.16 - 23:47
лТЗн.Колонки.Получить(Индекс).Имя?
   Serginio1
 
13 - 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;
}
   wormselfish
 
14 - 09.11.16 - 04:09
(13) Нагуглил. И все равно громоздко, хотя и правильно. Но у меня короче получилось
   Adilgeriy
 
15 - 09.11.16 - 05:15
А переключит нумерацию столбов в экселе почему не хочешь?
   Garykom
 
16 - 09.11.16 - 06:30
Зная что есть ограничение на кол-во столбцов в екселе можно в одну строчку записать, но науя?
   Рэйв
 
17 - 09.11.16 - 06:38
(0)А зачем? есксель и цифры прекрасно понимает.Да они  наглядне
   Feunoir
 
18 - 09.11.16 - 08:16
(16) Ограничение столбцов в последних версиях Excel - 16384. Точно одной строкой получится?
   Garykom
 
19 - 09.11.16 - 08:25
(18) угу всего то максимум 3 буковки
   NikVars
 
20 - 09.11.16 - 09:51
(0) СТОЛБЕЦ

См. также

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

Синтаксис

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

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

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

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

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

Пример

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует