Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Из номера столбца - получить букву столбца / 25 сообщений из 36, страница 1 из 2
27.02.2007, 16:56
    #34358343
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из номера столбца - получить букву столбца
Подскажите пожалуйста как лучше имея номер столбца получить букву столбца. Например "2" преобразовать в "B". Имеется ввиду в макросе.
...
Рейтинг: 0 / 0
27.02.2007, 17:27
    #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
27.02.2007, 17:33
    #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
27.02.2007, 17:39
    #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
27.02.2007, 18:03
    #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
27.02.2007, 18:08
    #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
27.02.2007, 18:38
    #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
27.02.2007, 18:40
    #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
27.02.2007, 19:15
    #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
27.02.2007, 20:32
    #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
27.02.2007, 20:42
    #34358937
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из номера столбца - получить букву столбца
Спасибо всем большое
...
Рейтинг: 0 / 0
27.02.2007, 21:05
    #34358959
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из номера столбца - получить букву столбца
DeggasadНо и так вроде ничё
Код: plaintext
Mid(Cells(y, x).Address,  2 , Len(Cells(y, x).Address) -  2  - Len(y))
До тех пор, пока ты делаешь одно преобразование номер-буква в минуту это ниче. Запихнешь это в цикл - повесишься
...
Рейтинг: 0 / 0
27.02.2007, 21:20
    #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
27.02.2007, 21:25
    #34358983
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из номера столбца - получить букву столбца
или чуть короче
Код: plaintext
1.
2.
Function getColNameByNum(colNum As Long) As String
 getColNameByNum = Replace(Mid(Columns(colNum).Address,  2 ,  2 ), ":", "")
End Function
...
Рейтинг: 0 / 0
28.02.2007, 00:30
    #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
28.02.2007, 08:44
    #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
28.02.2007, 08:45
    #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
28.02.2007, 09:28
    #34359433
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из номера столбца - получить букву столбца
DeggasadМне больше понравилось с IIF ()

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

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

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

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

A - XFD

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

A - XFD

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

A - XFD

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

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

KL
[MVP - Microsoft Excel]

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

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


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