|
Как проще всего преобразовать номер столбца 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 |
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 | |