С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/140: Рейтинг темы: голосов - 140, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 18

Есть ли в VBA функция переводящая номер столбца в его буквенный эквивалент в Excel

14.02.2012, 21:04. Показов 30445. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ли в VBA функция переводящая номер столбца в его буквенный эквивалент в Excel'е?
Т.е. мне предположим надо вывести в msgbox информацию о том, с каким столбцом мы имеем дело. Его числовой номер я знаю, но хочу для удобства подать его в буквенном виде. Использовать оператор Select Case с длиной 256 строк как то не хочется... Есть другие варианты решения?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2012, 21:04
Ответы с готовыми решениями:

Номер столбца по его букве. Delphi Excel
Привет, всем. Вопрос такой. Делаю программу в Delphi для работы с Excel. В Edit ввожу буквенное название столбца (например, В). Нужно ...

Есть ли функция, которая возвращает пару: минимальный элемент и его номер в списке?
Существует ли "стандартная" функция, которая возвращает пару: минимальный элемент и его номер в списке?

Определить максимальный элемент матрицы А, номер его строки и номер его столбца
Помогите написать программу)Не могу сформировать одномерный массив из строки(( Дана матрица А (5*5) нецелых элементов. -3.8 ...

13
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
14.02.2012, 22:08
Лучший ответ Сообщение было отмечено как решение

Решение

Например столбец 56
Visual Basic
1
2
3
4
Dim a
a = Cells(1, 56).Address(0, 0)
a = Left(a, Len(a) - 1)
Debug.Print a
Или так
Visual Basic
1
Debug.Print split(application.ConvertFormula ("R1C56",xlR1C1 ,xla1),"$")(1)
Добавлено через 24 минуты
Нашел тему с другого сайта, где это обсуждалось. Еще вариация на тему первого и второго вариантов:
Visual Basic
1
2
3
Узнаём имя 6-го столбца
 
MsgBox Split(Cells(1, 6).Address, "$")(1)
Еще
У меня получилась такая функция:

Visual Basic
1
2
3
4
5
6
Function Num2ABC(ByVal x As Long) As String
Do
Num2ABC = Chr$(64 + x Mod 26) & Num2ABC
x = x \ 26
Loop Until x = 0
End Function
Она работает в 25 раз быстрее, чем функция, основанная на Application.ConvertFormula
4
здесь больше нет...
3376 / 1674 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
15.02.2012, 10:45
вариант
Visual Basic
1
2
3
4
5
Function strCol(n As Integer) As String
    With Cells(1, n)
        strCol = Replace(.Address(0, 0), .Row, "")
    End With
End Function
1
 Аватар для KoGG
5637 / 1619 / 418
Регистрация: 23.12.2010
Сообщений: 2,428
Записей в блоге: 1
15.02.2012, 16:02
Цитата Сообщение от Казанский Посмотреть сообщение
Еще
У меня получилась такая функция:


Visual Basic
1
2
3
4
5
6
Function Num2ABC(ByVal x As Long) As String
Do
Num2ABC = Chr$(64 + x Mod 26) & Num2ABC
x = x \ 26
Loop Until x = 0
End Function
Она работает в 25 раз быстрее, чем функция, основанная на Application.ConvertFormula
Функция Num2ABC работает неправильно , при x = 26 Num2ABC=A@ и так далее.
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
15.02.2012, 17:17
Функция Num2ABC работает неправильно , при x = 26 Num2ABC=A@ и так далее
Visual Basic
1
2
3
4
5
6
7
Function Num2ABC(ByVal x As Long) As String
x = x - 1
Do
Num2ABC = Chr$(65 + x Mod 26) & Num2ABC
x = x \ 26 - 1
Loop While x >= 0
End Function
2
 Аватар для KoGG
5637 / 1619 / 418
Регистрация: 23.12.2010
Сообщений: 2,428
Записей в блоге: 1
15.02.2012, 17:39
Вот правильная функция:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Function Num2ABC(ByVal x As Long) As String
    Dim i As Integer
    Do While x > 0
        i = x Mod 26
        If i = 0 Then
            Num2ABC = "Z" & Num2ABC
            x = x \ 26 - 1
        Else
            Num2ABC = Chr$(64 + i) & Num2ABC
            x = x \ 26
        End If
    Loop
End Function
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
15.02.2012, 17:44
или так:
Visual Basic
1
2
3
4
5
6
Function Num2ABC(ByVal x As Long) As String
Do
Num2ABC = Chr$(65 + (x - 1) Mod 26) & Num2ABC
x = (x - 1) \ 26
Loop Until x = 0
End Function
2
 Аватар для KoGG
5637 / 1619 / 418
Регистрация: 23.12.2010
Сообщений: 2,428
Записей в блоге: 1
15.02.2012, 17:46
Цитата Сообщение от m-ch Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
Function Num2ABC(ByVal x As Long) As String
x = x - 1
Do
Num2ABC = Chr$(65 + x Mod 26) & Num2ABC
x = x \ 26 - 1
Loop While x >= 0
End Function
Это лучше
2
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 18
16.02.2012, 11:48  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
или так:
Visual Basic
1
2
3
4
5
6
Function Num2ABC(ByVal x As Long) As String
Do
Num2ABC = Chr$(65 + (x - 1) Mod 26) & Num2ABC
x = (x - 1) \ 26
Loop Until x = 0
End Function
Вы бы не могли написать комменты к проге... Не понятно это Num2ABC = Chr$(65 + (x - 1) Mod 26) & Num2ABC... Вообще не могу понять, что происходит в этом выражении...
0
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 20
09.02.2016, 15:30
Цитата Сообщение от Казанский Посмотреть сообщение
Узнаём имя 6-го столбца
MsgBox Split(Cells(1, 6).Address, "$")(1)
Коротко и ясно!!! Спасибо большое очень пригодилось.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,932
Записей в блоге: 4
09.02.2016, 16:49
а есть ли обратная функция
имя ячейки FJD
какой это номер столбика
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
09.02.2016, 16:56
Visual Basic
1
Cells(1, "FJD").Column
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.02.2016, 23:06
shanemac51, можно по аналогии
Visual Basic
1
2
3
4
5
6
7
Function ABC2Num(ByVal x As String) As Long
Dim i&
  x = UCase(x)
  For i = 1 To Len(x)
    ABC2Num = ABC2Num * 26 + AscW(Mid$(x, i, 1)) - 64
  Next
End Function
тест в Immediate
Code
1
2
?abc2num("FJD"),columns("FJD").column
 4320          4320
2
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,825
Записей в блоге: 4
06.12.2023, 20:32
Цитата Сообщение от KoGG Посмотреть сообщение
64 + x Mod 26
А что хранят числа 64 и 26, для чего они?

Добавлено через 9 минут
А я понял это номер большого символа из ASCII таблицы https://ru.wikibooks.org/wiki/... ocolor.svg (смотреть DEC). А 26 количество символов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2023, 20:32
Помогаю со студенческими работами здесь

Найти минимальный элемент матрицы, вывести его значение, номер строки и номер столбца
Дана матрица А размерностью NxM (значения элементов матрицы вводятся с клавиатуры). Необходимо найти минимальный элемент, вывести его...

Определить значение максимального элемента матрицы и его координаты (номер строки и номер столбца)
Определить значение максимального элемента матрицы и его координаты (номер строки и номер столбца).

В матрице размером m × n найти максимальное число и его координаты (номер строки и номер столбца)
Dim m As Integer Dim n As Integer Dim max As Integer Dim I As Integer Dim j As Integer Dim a() As Single Dim s() As Single ...

Найти минимальный элемент массива и номер его столбца. Вывести сам массив иномер столбца минимального элемента
Найти минимальный элемент массива и номер его столбца. Вывести сам массив иномер столбца минимального элемента

Найти наименьший элемент матрицы. Указать его номер строки и столбца и заменить его значением -9999
дана матрица -0.25 11 4.5 5 0 21.4 1 6.3 14.8 2 3.5 -2 11 2.36 0.48 4.13 1)задание , матрицу берем с листа Excel , нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru