powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Из номера столбца - получить букву столбца
25 сообщений из 36, страница 1 из 2
Из номера столбца - получить букву столбца
    #34358343
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста как лучше имея номер столбца получить букву столбца. Например "2" преобразовать в "B". Имеется ввиду в макросе.
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358474
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам додумался до следующего, может улучшите или может я совсем из далека зашёл?
Мне бы жедательно покороче.

Код: plaintext
1.
2.
3.
4.
5.
Sub primer0()

x =  10 
Debug.Print Mid(Cells( 1 , x).Address,  2 , WorksheetFunction.Find("$", Cells( 1 , x).Address,  2 ) -  2 )

End Sub


Код: plaintext
1.
2.
3.
4.
5.
Sub primer1()

x =  28 
Debug.Print Mid(Cells( 1 , x).Address,  2 , Len(Cells( 1 , x).Address) -  3 )

End Sub

Второе проще!
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358490
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
второй вариант дает неверный результат
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub primer0()

x =  254 
y =  112 
Debug.Print Mid(Cells(y, x).Address,  2 , WorksheetFunction.Find("$", Cells(y, x).Address,  2 ) -  2 )

End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
Sub primer1()

x =  254 
y =  112 
Debug.Print Mid(Cells(y, x).Address,  2 , Len(Cells(y, x).Address) -  3 )

End Sub
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358512
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же не использую строчки, строка у меня всегда первая. Если строчку менять, то так

Sub primer1()

x = 254
y = 112
Debug.Print Mid(Cells(y, x).Address, 2, Len(Cells(y, x).Address) - 2 - Len(y))

End Sub

А нет ли чего нибуть попроще, а то как то очень длинно получается?
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358610
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пару лет назад такое тоже понадобилось.
написал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Function getColNameByNum(colNum As Long, Optional bAbsolute As Boolean = True) As String
'возвращает имя столбца в стиле A1 по его номеру
'проверка на 255 отсутствует.
'если bAbsolute=True то имя столбца предваряется знаком абсолютной ссылки $
  Const numCh As Long =  26 &
  Const charOffset As Long =  64 &

  Dim fL As Long, sL As Long
  If bAbsolute Then getColNameByNum = "$"
  
  fL = colNum \ numCh 
  sL = colNum Mod numCh 
  
  If (sL =  0 &) Then
    sL = numCh
    fL = fL -  1 &
  End If
  
  If (fL >  0 &) Then
    getColNameByNum = getColNameByNum & VBA.Chr$(fL + charOffset)
  End If
  
  getColNameByNum = getColNameByNum & VBA.Chr$(sL + charOffset)
  
End Function
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358626
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Арифметику в школе уже совсем ну учат....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    x = номер колонки
    If x >  26  Then
        c = Chr( 64  + x /  26 ) & Chr( 64  + x Mod  26 )
    Else
        c = Chr( 64  + x)
    End If
    Debug.Print c
или в одну строку:
Код: plaintext
1.
2.
    c = IIf(x >  26 , Chr( 64  + x /  26 ) & Chr( 64  + x Mod  26 ), Chr( 64  + x))
    Debug.Print c
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358707
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlАрифметику в школе уже совсем ну учат....

Код: plaintext
1.
2.
    c = IIf(x >  26 , Chr( 64  + x /  26 ) & Chr( 64  + x Mod  26 ), Chr( 64  + x))
    Debug.Print c


Для этого как минимум нужно знать:
1) Что такое Mod
2) Что такое Chr

Ну и наверное ещё:
3) Сколько букв в английском алфавите
4) Какая закономерность наименований столбцов в Exel

Тогда уже и об арифметике можно говорить
А так мне ещё учиться и учиться
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358716
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Код: plaintext
1.
2.
    c = IIf(x >  26 , Chr( 64  + x /  26 ) & Chr( 64  + x Mod  26 ), Chr( 64  + x))
    Debug.Print c
после 191 колонки не работает
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358814
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbapro White Owl
Код: plaintext
1.
2.
    c = IIf(x >  26 , Chr( 64  + x /  26 ) & Chr( 64  + x Mod  26 ), Chr( 64  + x))
    Debug.Print c
после 191 колонки не работаетА, ну да... iif же оба выражения вычисляет....
Вот так должно быть:
Код: plaintext
c = IIf(x >  26 , Chr( 64  + Int((x -  1 ) /  26 )) & Chr( 65  + ((x -  1 ) Mod  26 )), ChrW( 64  + x))
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358929
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал с арифметикой

Код: plaintext
   c = IIf(x >  26 , Chr( 64  + Int(x /  26 )), "") & Chr( 65  + (x -  1 ) Mod  26 )

Но и так вроде ничё

Код: plaintext
Mid(Cells(y, x).Address,  2 , Len(Cells(y, x).Address) -  2  - Len(y))
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358937
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем большое
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358959
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadНо и так вроде ничё
Код: plaintext
Mid(Cells(y, x).Address,  2 , Len(Cells(y, x).Address) -  2  - Len(y))
До тех пор, пока ты делаешь одно преобразование номер-буква в минуту это ниче. Запихнешь это в цикл - повесишься
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358979
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я бы так решил эту проблему
Код: plaintext
1.
2.
Function getColNameByNum(colNum As Long) As String
 getColNameByNum = Replace(Mid(Columns(colNum).Address(ColumnAbsolute:=False),  1 ,  2 ), ":", "")
End Function
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34358983
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или чуть короче
Код: plaintext
1.
2.
Function getColNameByNum(colNum As Long) As String
 getColNameByNum = Replace(Mid(Columns(colNum).Address,  2 ,  2 ), ":", "")
End Function
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34359139
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergeyvgили чуть короче
Код: plaintext
1.
2.
Function getColNameByNum(colNum As Long) As String
 getColNameByNum = Replace(Mid(Columns(colNum).Address,  2 ,  2 ), ":", "")
End Function


и еще короче:

Код: plaintext
1.
2.
Function ColLetter(i As Integer) As String
    ColLetter = Replace(Cells( 1 , i).Address( 0 ,  0 ),  1 , "")
End Function

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34359337
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне больше понравилось с IIF ()

Sub primer_f_sad()
x = номер столбца

Debug.Print Mid(Cells(1, x).Address, 2, IIf(x > 26, 2, 1))

Debug.Print Mid(Columns(x).Address, 2, IIf(x > 26, 2, 1))

Debug.Print Left(Columns(x).Address(0, 0), IIf(x > 26, 2, 1))

Debug.Print Right(Columns(x).Address, IIf(x > 26, 2, 1))

End Sub
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34359338
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне больше понравилось с IIF ()

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub primer_f_sad()
x = номер столбца

Debug.Print Mid(Cells( 1 , x).Address,  2 , IIf(x >  26 ,  2 ,  1 ))

Debug.Print Mid(Columns(x).Address,  2 , IIf(x >  26 ,  2 ,  1 ))

Debug.Print Left(Columns(x).Address( 0 ,  0 ), IIf(x >  26 ,  2 ,  1 ))

Debug.Print Right(Columns(x).Address, IIf(x >  26 ,  2 ,  1 ))

End Sub
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34359433
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadМне больше понравилось с IIF ()

это решение не будет работать в Office 2007

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34359746
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) DeggasadМне больше понравилось с IIF ()

это решение не будет работать в Office 2007

KL
[MVP - Microsoft Excel]
Почему?
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34361197
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadПочему?

A - XFD

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34361249
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) DeggasadПочему?

A - XFD

KL
[MVP - Microsoft Excel]
¿qué significa?
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34361321
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) DeggasadПочему?

A - XFD

KL
[MVP - Microsoft Excel]
Что простите?
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34361560
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:-) название столбца может содержать до 3-х букв.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34361612
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL):-) название столбца может содержать до 3-х букв.

KL
[MVP - Microsoft Excel]

Я просто Exel2007 ещё не видел, а может и не увижу! Как переведут всех на OpenOffice!
Ну дома то понятно, но всё равно не удобно!
...
Рейтинг: 0 / 0
Из номера столбца - получить букву столбца
    #34369076
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadКак переведут всех на OpenOffice! Мое личное мнение:
Как только возникнет тенденция к переходу всех на OpenOffice, он перестанет быть бесплатным и потеряет свое единственное преимущество :-) На сегодня, в профессиональном плане, между Excel и Calc такая же разница как между Calc и VisiCalc (первым прототипом Excel). Другие преимущества перед Excel, рекламируемые автором OpenOffice, частично неправда и в целом смехотворны. Обе программы установлены на моих компьютерах.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Из номера столбца - получить букву столбца
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]