Get Excel column number

Albert Davletov
UniLecs
Published in
2 min readAug 27, 2021

Задача: в офис программе Excel столбцы обозначаются буквенными кодами (см. нумерацию ниже).

A -> 1

B -> 2

C -> 3

Z -> 26

AA -> 27

AB -> 28

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

Входные данные: строка размером от 1 до 7 символов. Считайте, что входная строка является валидным значением для обозначения столбца Excel.

Вывод: номер столбца

Примеры:

  1. “A”
    Output: 1
  2. “AB”
    Output: 28

Разбор

Допустим, мы хотим получить значение колонки “AZZC”.

Это можно разбить как:
‘A ***’ + ‘Z **’ + ‘Z *’ + ‘C’
где * — означает блок из 1 символа; ** — означает блок из 2 символов и т.д.

Очевидно, что в блоке односимвольных колонок 26¹ вариантов. В блоке, состоящем из 2 символов, уже 26² варианта и т.д.

Рассмотрим пример “AZZC”:

  1. Начнем с последнего символа ‘C’:
    ‘C’: 3 * 26⁰ = 3
    number = 3;
  2. Далее рассматриваем 2й символ с конца ‘Z*’:
    ‘Z*’: 26 * 26¹ = 676
    number = 3 + 676
  3. ‘Z**’:
    ‘Z**’: 26 * 26² = 17576
    number = 679 + 17576 = 18255
  4. ‘A***’
    ‘A***’: 1 * 26³ = 17576
    number = 18255 + 17576 = 35831

Number = 35831

Реализация

C#

https://gist.github.com/unilecs/fa83fef7e4d252e5f55de231d146baef

Play-test

https://dotnetfiddle.net/TSGySQ

--

--