powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / макрос на excel, конвертация значений столбца
11 сообщений из 11, страница 1 из 1
макрос на excel, конвертация значений столбца
    #37314023
KLUGEST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!!
Хотел спросить никто не разбирался с таким вопросом, когда нужно конвертнуть столбцы в цифру. Пример :
Есть ячейка A1 -> т.е если <A> будет 1
или Z2 - > Z будет 26
AA -> 27

Мне нужно сделать наоборот, например на входе число 1 на выходе значение столбца например <A>. Написать такую функцию вообщем просто, но может кто уже делал :) .
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314027
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
KLUGESTНаписать такую функцию вообщем просто, но может кто уже делал :) .
Без макроса действительно просто.
=СТОЛБЕЦ()
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314032
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KLUGESTМне нужно сделать наоборот...
Сори, это я не прочёл :(
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314037
KLUGEST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага, первый вариант т.е столбец() в макросе я придумал так:
Bukv - на входе, Pos1 - цифра на выходе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 
C5 = Len(Bykv)
C8 = C5 ' OPREDELENIE PORYADKA
C6 =  0 
Pos1 =  0 
For i1 =  1  To C5
C7 = Mid$(Bykv, i1,  1 )
Pos1 = Pos1 + (Asc(C7) -  64 ) *  26  ^ (C8 -  1 )
C8 = C8 -  1 
Next i1

MsgBox Pos1



...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314051
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не оно?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub test()
Dim i%, s$
    For i =  1  To  256 
        s = Application.Evaluate("=ADDRESS(1," & i & ")")
Debug.Print s
        i = i +  1 
    Next i
End Sub
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314059
Thermik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Public Function Num2ABC(ByVal x As Integer) As String
        Dim ABC As String = ""

        Do
            ABC = Chr( 64  + x Mod  26 ) & ABC
            x = x \  26 
        Loop Until x =  0 

        Return ABC
    End Function


    Function ABC2Num(ByVal ABC As String) As Integer
        Dim x As Integer =  0 


        For i As Integer =  0  To ABC.Length -  1 
            Dim xxx As String = ABC.Substring(i,  1 )
            x += (Asc(xxx) -  64 ) *  26  ^ (ABC.Length - i -  1 )
        Next

        Return x
    End Function
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314087
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извращенцы мы . Еще почему бы не так:
Код: plaintext
1.
2.
For i% =  1  To  100 
    Debug.Print Split(Columns(i).Address(False, False, xlA1), ":")( 0 )
Next
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314094
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Function ColumnName(i%) As String
    ColumnName = Replace(Application.Evaluate("=ADDRESS(1," & i% & ",4)"),  1 , "")
End Function
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314356
KLUGEST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за ответы !!

А это работает для 2003 ?

Function ColumnName(i%) As String
ColumnName = Replace(Application.Evaluate("=ADDRESS(1," & i% & ",4)"), 1, "")
End Function

И если нет можно чем заменить ?

Классная функция, работает на ура, есть небольшая проблема, когда идёт переключение столбцов например столбец Z отображается так A@,
столбец AZ B@ . Может есть улучшенный вариант функции, буду очень благодарен ...

Public Function Num2ABC(ByVal x As Integer) As String
Dim ABC As String = ""

Do
ABC = Chr(64 + x Mod 26) & ABC
x = x \ 26
Loop Until x = 0

Return ABC
End Function
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314403
Thermik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KLUGEST,

Исправил


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Function Num2ABC(ByVal x As Integer) As String
Dim ABC As String
ABC = ""

Do
If Chr( 64  + x Mod  26 ) = "@" Then
 ABC = "Z" & ABC
Else
 ABC = Chr( 64  + x Mod  26 ) & ABC
End If


x = (x -  1 ) \  26 
Loop Until x =  0 

Num2ABC = ABC
End Function
...
Рейтинг: 0 / 0
макрос на excel, конвертация значений столбца
    #37314432
KLUGEST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое !! Сейчас всё работает!!

Предлагаю свой вариант тоже, через Int, может кому понадобится:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function Colum1(ByVal JK1 As Integer) As String
Dim K as Integer
Dim BUKV2, BUKV3 as String
 K = JK1 /  26 
   If K <=  1  Then
   BUKV2 = Chr( 64  + JK1)
    Else
    K2 = Int(JK1 /  26 ): BUKV3 = Chr( 64  + K2): BUKV2 = Chr( 64  + (JK1 - K2 *  26 )): BUKV2 = BUKV3 + BUKV2
    End If

Colum1 = BUKV2
End Function

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


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