Для записи номеров столбцов используются 26 латинских букв, причем после исчерпания букв A..Z следует АА..ZZ, затем - ААА. Это всего лишь кодирование чисел в системе счисления по основанию 26, сдвинутой на единицу (потому что нулей нет) с алфавитом А..Z.Тогда запись вида a₁a₂a₃ = a₁·26² + a₂·26 + a₃.Полагаем, что А=1, B=2, ... Z=26 Тогда XVD₂₆ = 24·26² + 22·26 + 5 = 16224 + 572 + 4 = 16800, но никак не 16384. 16384 кодируется как XFD - в условии опечатка.
// PascalABC.NET 3.2, сборка 1334 от 12.11.2016begin var s:=UpperCase(ReadlnString('Введите имя столбца')); var n:=s.Length; var cn:=0; for var i:=1 to n do cn+=(ord(s[n-i+1])-64)*trunc(power(26,i-1)); Writeln('Номер колонки равен ',cn)end.ПримерыВведите имя столбца XFDНомер колонки равен 16384Введите имя столбца AAНомер колонки равен 27
Функция на VBAFunction cln(s As String) As Integer Dim colNumber As Integer, i As Integer s = UCase(s): cn = 0 n = Len(s) For i = 1 To n cn = cn + (Asc(Mid(s, n - i + 1, 1)) - 64) * 26 ^ (i - 1) Next cln = cnEnd Function