Excel vba преобразовать номер столбца

This function returns the column letter for a given column number.

Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

testing code for column 100

Sub Test()
    MsgBox Col_Letter(100)
End Sub

Stevoisiak's user avatar

Stevoisiak

22.8k27 gold badges122 silver badges219 bronze badges

answered Oct 9, 2012 at 9:44

brettdj's user avatar

5

If you’d rather not use a range object:

Function ColumnLetter(ColumnNumber As Long) As String
    Dim n As Long
    Dim c As Byte
    Dim s As String

    n = ColumnNumber
    Do
        c = ((n - 1) Mod 26)
        s = Chr(c + 65) & s
        n = (n - c)  26
    Loop While n > 0
    ColumnLetter = s
End Function

answered Mar 12, 2013 at 16:37

robartsd's user avatar

robartsdrobartsd

1,3901 gold badge9 silver badges15 bronze badges

7

Something that works for me is:

Cells(Row,Column).Address 

This will return the $AE$1 format reference for you.

answered Nov 21, 2013 at 21:00

Damian Fennelly's user avatar

2

I'm surprised nobody suggested:   Columns(Column Index).Address

  • For example: MsgBox Columns( 9347 ).Address returns $MUM:$MUM.

To return ONLY the column letter(s): Split((Columns(Column Index).Address(,0)),":")(0)

  • For example: MsgBox Split((Columns( 2734 ).Address(,0)),":")(0) returns DAD.

  More Examples


answered Mar 30, 2018 at 15:22

ashleedawg's user avatar

ashleedawgashleedawg

20k8 gold badges73 silver badges104 bronze badges

2

And a solution using recursion:

Function ColumnNumberToLetter(iCol As Long) As String

    Dim lAlpha As Long
    Dim lRemainder As Long

    If iCol <= 26 Then
        ColumnNumberToLetter = Chr(iCol + 64)
    Else
        lRemainder = iCol Mod 26
        lAlpha = Int(iCol / 26)
        If lRemainder = 0 Then
            lRemainder = 26
            lAlpha = lAlpha - 1
        End If
        ColumnNumberToLetter = ColumnNumberToLetter(lAlpha) & Chr(lRemainder + 64)
    End If

End Function

answered Nov 27, 2013 at 10:31

Nikolay Ivanov's user avatar

Nikolay IvanovNikolay Ivanov

5,1191 gold badge26 silver badges22 bronze badges

5

Just one more way to do this. Brettdj’s answer made me think of this, but if you use this method you don’t have to use a variant array, you can go directly to a string.

ColLtr = Cells(1, ColNum).Address(True, False)
ColLtr = Replace(ColLtr, "$1", "")

or can make it a little more compact with this

ColLtr = Replace(Cells(1, ColNum).Address(True, False), "$1", "")

Notice this does depend on you referencing row 1 in the cells object.

Stevoisiak's user avatar

Stevoisiak

22.8k27 gold badges122 silver badges219 bronze badges

answered May 23, 2014 at 15:22

OSUZorba's user avatar

OSUZorbaOSUZorba

1,07911 silver badges13 bronze badges

0

This is available through using a formula:

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

and so also can be written as a VBA function as requested:

Function ColName(colNum As Integer) As String
    ColName = Split(Worksheets(1).Cells(1, colNum).Address, "$")(1)
End Function

answered Dec 9, 2014 at 12:08

Alistair Collins's user avatar

Alistair CollinsAlistair Collins

2,2005 gold badges25 silver badges44 bronze badges

This is a version of robartsd’s answer (with the flavor of Jan Wijninckx’s one line solution), using recursion instead of a loop.

Public Function ColumnLetter(Column As Integer) As String
    If Column < 1 Then Exit Function
    ColumnLetter = ColumnLetter(Int((Column - 1) / 26)) & Chr(((Column - 1) Mod 26) + Asc("A"))
End Function

I’ve tested this with the following inputs:

1   => "A"
26  => "Z"
27  => "AA"
51  => "AY"
702 => "ZZ"
703 => "AAA" 
-1  => ""
-234=> ""

Stevoisiak's user avatar

Stevoisiak

22.8k27 gold badges122 silver badges219 bronze badges

answered Feb 4, 2015 at 16:18

alexanderbird's user avatar

alexanderbirdalexanderbird

3,7071 gold badge24 silver badges35 bronze badges

2

robertsd’s code is elegant, yet to make it future-proof, change the declaration of n to type long

In case you want a formula to avoid macro’s, here is something that works up to column 702 inclusive

=IF(A1>26,CHAR(INT((A1-1)/26)+64),"")&CHAR(MOD(A1-1,26)+65)

where A1 is the cell containing the column number to be converted to letters.

Stevoisiak's user avatar

Stevoisiak

22.8k27 gold badges122 silver badges219 bronze badges

answered Feb 17, 2014 at 3:29

Jan Wijninckx's user avatar

1

This is a function based on @DamienFennelly’s answer above. If you give me a thumbs up, give him a thumbs up too! :P

Function outColLetterFromNumber(iCol as Integer) as String
    sAddr = Cells(1, iCol).Address
    aSplit = Split(sAddr, "$")
    outColLetterFromNumber = aSplit(1)
End Function

Stevoisiak's user avatar

Stevoisiak

22.8k27 gold badges122 silver badges219 bronze badges

answered Mar 20, 2014 at 18:43

BrettFromLA's user avatar

BrettFromLABrettFromLA

9061 gold badge7 silver badges17 bronze badges

2

There is a very simple way using Excel power: Use Range.Cells.Address property, this way:

strCol = Cells(1, lngRow).Address(xlRowRelative, xlColRelative)

This will return the address of the desired column on row 1. Take it of the 1:

strCol = Left(strCol, len(strCol) - 1)

Note that it so fast and powerful that you can return column addresses that even exists!

Substitute lngRow for the desired column number using Selection.Column property!

Niall's user avatar

Niall

29.8k10 gold badges100 silver badges140 bronze badges

answered Jul 29, 2014 at 12:39

flaviomorgado's user avatar

Here is a simple one liner that can be used.

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 1)

It will only work for a 1 letter column designation, but it is nice for simple cases. If you need it to work for exclusively 2 letter designations, then you could use the following:

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 2)

answered Aug 26, 2014 at 14:15

Syd B's user avatar

Syd BSyd B

211 bronze badge

This will work regardless of what column inside your one code line for cell thats located in row X, in column Y:

Mid(Cells(X,Y).Address, 2, instr(2,Cells(X,Y).Address,"$")-2)

If you have a cell with unique defined name «Cellname»:

Mid(Cells(1,val(range("Cellname").Column)).Address, 2, instr(2,Cells(1,val(range("Cellname").Column)).Address,"$")-2)

answered Nov 5, 2014 at 17:30

Codeplayer's user avatar

So I’m late to the party here, but I want to contribute another answer that no one else has addressed yet that doesn’t involve arrays. You can do it with simple string manipulation.

Function ColLetter(Col_Index As Long) As String

    Dim ColumnLetter As String

    'Prevent errors; if you get back a number when expecting a letter, 
    '    you know you did something wrong.
    If Col_Index <= 0 Or Col_Index >= 16384 Then
        ColLetter = 0
        Exit Function
    End If

    ColumnLetter = ThisWorkbook.Sheets(1).Cells(1, Col_Index).Address     'Address in $A$1 format
    ColumnLetter = Mid(ColumnLetter, 2, InStr(2, ColumnLetter, "$") - 2)  'Extracts just the letter

    ColLetter = ColumnLetter
End Sub

After you have the input in the format $A$1, use the Mid function, start at position 2 to account for the first $, then you find where the second $ appears in the string using InStr, and then subtract 2 off to account for that starting position.

This gives you the benefit of being adaptable for the whole range of possible columns. Therefore, ColLetter(1) gives back «A», and ColLetter(16384) gives back «XFD», which is the last possible column for my Excel version.

answered Dec 27, 2018 at 23:51

SandPiper's user avatar

SandPiperSandPiper

2,7765 gold badges32 silver badges49 bronze badges

Easy way to get the column name

Sub column()

cell=cells(1,1)
column = Replace(cell.Address(False, False), cell.Row, "")
msgbox column

End Sub

I hope it helps =)

answered Nov 11, 2014 at 12:09

cristobal's user avatar

The solution from brettdj works fantastically, but if you are coming across this as a potential solution for the same reason I was, I thought that I would offer my alternative solution.

The problem I was having was scrolling to a specific column based on the output of a MATCH() function. Instead of converting the column number to its column letter parallel, I chose to temporarily toggle the reference style from A1 to R1C1. This way I could just scroll to the column number without having to muck with a VBA function. To easily toggle between the two reference styles, you can use this VBA code:

Sub toggle_reference_style()

If Application.ReferenceStyle = xlR1C1 Then
  Application.ReferenceStyle = xlA1
Else
  Application.ReferenceStyle = xlR1C1
End If

End Sub

answered Feb 12, 2015 at 18:07

Will Ediger's user avatar

Will EdigerWill Ediger

8939 silver badges17 bronze badges

Furthering on brettdj answer, here is to make the input of column number optional. If the column number input is omitted, the function returns the column letter of the cell that calls to the function. I know this can also be achieved using merely ColumnLetter(COLUMN()), but i thought it’d be nice if it can cleverly understand so.

Public Function ColumnLetter(Optional ColumnNumber As Long = 0) As String
    If ColumnNumber = 0 Then
        ColumnLetter = Split(Application.Caller.Address(True, False, xlA1), "$")(0)
    Else
        ColumnLetter = Split(Cells(1, ColumnNumber).Address(True, False, xlA1), "$")(0)
    End If
End Function

The trade off of this function is that it would be very very slightly slower than brettdj’s answer because of the IF test. But this could be felt if the function is repeatedly used for very large amount of times.

answered Mar 19, 2016 at 4:52

Rosetta's user avatar

RosettaRosetta

2,6251 gold badge12 silver badges28 bronze badges

Here is a late answer, just for simplistic approach using Int() and If in case of 1-3 character columns:

Function outColLetterFromNumber(i As Integer) As String

    If i < 27 Then       'one-letter
        col = Chr(64 + i)
    ElseIf i < 677 Then  'two-letter
        col = Chr(64 + Int(i / 26)) & Chr(64 + i - (Int(i / 26) * 26))
    Else                 'three-letter
        col = Chr(64 + Int(i / 676)) & Chr(64 + Int(i - Int(i / 676) * 676) / 26)) & Chr(64 + i - (Int(i - Int(i / 676) * 676) / 26) * 26))
    End If

    outColLetterFromNumber = col

End Function

answered May 28, 2016 at 21:56

ib11's user avatar

ib11ib11

2,5203 gold badges20 silver badges54 bronze badges

Function fColLetter(iCol As Integer) As String
  On Error GoTo errLabel
  fColLetter = Split(Columns(lngCol).Address(, False), ":")(1)
  Exit Function
errLabel:
  fColLetter = "%ERR%"
End Function

answered Mar 4, 2017 at 22:36

Krzysztof's user avatar

Here, a simple function in Pascal (Delphi).

function GetColLetterFromNum(Sheet : Variant; Col : Integer) : String;
begin
  Result := Sheet.Columns[Col].Address;  // from Col=100 --> '$CV:$CV'
  Result := Copy(Result, 2, Pos(':', Result) - 2);
end;

answered Sep 8, 2017 at 11:00

Jordi's user avatar

JordiJordi

215 bronze badges

This formula will give the column based on a range (i.e., A1), where range is a single cell. If a multi-cell range is given it will return the top-left cell. Note, both cell references must be the same:

MID(CELL(«address»,A1),2,SEARCH(«$»,CELL(«address»,A1),2)-2)

How it works:

CELL(«property»,»range») returns a specific value of the range depending on the property used. In this case the cell address.
The address property returns a value $[col]$[row], i.e. A1 -> $A$1.
The MID function parses out the column value between the $ symbols.

answered Jan 31, 2018 at 18:49

Thom's user avatar

ThomThom

212 bronze badges

Sub GiveAddress()
    Dim Chara As String
    Chara = ""
    Dim Num As Integer
    Dim ColNum As Long
    ColNum = InputBox("Input the column number")

    Do
        If ColNum < 27 Then
            Chara = Chr(ColNum + 64) & Chara
            Exit Do
        Else
            Num = ColNum / 26
            If (Num * 26) > ColNum Then Num = Num - 1
            If (Num * 26) = ColNum Then Num = ((ColNum - 1) / 26) - 1
            Chara = Chr((ColNum - (26 * Num)) + 64) & Chara
            ColNum = Num
        End If
    Loop

    MsgBox "Address is '" & Chara & "'."
End Sub

Sebastian Brosch's user avatar

answered Feb 4, 2016 at 11:16

Chetan V.'s user avatar

Column letter from column number can be extracted using formula by following steps
1. Calculate the column address using ADDRESS formula
2. Extract the column letter using MID and FIND function

Example:
1. ADDRESS(1000,1000,1)
results $ALL$1000
2. =MID(F15,2,FIND(«$»,F15,2)-2)
results ALL asuming F15 contains result of step 1

In one go we can write
MID(ADDRESS(1000,1000,1),2,FIND(«$»,ADDRESS(1000,1000,1),2)-2)

answered Sep 22, 2015 at 20:54

Bhanu Sinha's user avatar

Bhanu SinhaBhanu Sinha

1,51612 silver badges10 bronze badges

this is only for REFEDIT … generaly use uphere code
shortly version… easy to be read and understood /
it use poz of $

Private Sub RefEdit1_Change()

    Me.Label1.Caption = NOtoLETTER(RefEdit1.Value) ' you may assign to a variable  var=....'

End Sub

Function NOtoLETTER(REFedit)

    Dim First As Long, Second As Long

    First = InStr(REFedit, "$")                 'first poz of $
    Second = InStr(First + 1, REFedit, "$")     'second poz of $

    NOtoLETTER = Mid(REFedit, First + 1, Second - First - 1)   'extract COLUMN LETTER

End Function

Tunaki's user avatar

Tunaki

131k46 gold badges330 silver badges415 bronze badges

answered Mar 19, 2016 at 17:02

Gabriel V's user avatar

answered Mar 30, 2016 at 9:31

PEDRO COUTO's user avatar

0

what about just converting to the ascii number and using Chr() to convert back to a letter?

col_letter = Chr(Selection.Column + 96)

answered Jul 15, 2016 at 15:41

beef_supreme's user avatar

0

Эта функция возвращает букву столбца для заданного номера столбца.

Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

код тестирования для столбца 100

Sub Test()
    MsgBox Col_Letter(100)
End Sub

brettdj
09 окт. 2012, в 10:03

Поделиться

Если вы не хотите использовать объект диапазона:

Function ColumnLetter(ColumnNumber As Long) As String
    Dim n As Long
    Dim c As Byte
    Dim s As String

    n = ColumnNumber
    Do
        c = ((n - 1) Mod 26)
        s = Chr(c + 65) & s
        n = (n - c)  26
    Loop While n > 0
    ColumnLetter = s
End Function

robartsd
12 март 2013, в 17:44

Поделиться

Что-то, что работает для меня, это:

Cells(Row,Column).Address 

Это вернет ссылку формата $AE $1 для вас.

Damian Fennelly
21 нояб. 2013, в 22:25

Поделиться

Еще один способ сделать это. Brettdj answer заставлял меня думать об этом, но если вы используете этот метод, вам не нужно использовать альтернативный массив, вы можете перейти непосредственно к строке.

ColLtr = Cells(1, ColNum).Address(True, False)
ColLtr = Replace(ColLtr, "$1", "")

или может сделать его немного более компактным с этим

ColLtr = Replace(Cells(1, ColNum).Address(True, False), "$1", "")

Обратите внимание, что это зависит от того, как вы ссылаетесь на строку 1 в объекте ячейки.

OSUZorba
23 май 2014, в 16:01

Поделиться

И решение с использованием рекурсии:

Function ColumnNumberToLetter(iCol As Long) As String

    Dim lAlpha As Long
    Dim lRemainder As Long

    If iCol <= 26 Then
        ColumnNumberToLetter = Chr(iCol + 64)
    Else
        lRemainder = iCol Mod 26
        lAlpha = Int(iCol / 26)
        If lRemainder = 0 Then
            lRemainder = 26
            lAlpha = lAlpha - 1
        End If
        ColumnNumberToLetter = ColumnNumberToLetter(lAlpha) & Chr(lRemainder + 64)
    End If

End Function

Nikolay Ivanov
27 нояб. 2013, в 11:26

Поделиться

Изображение 3720

  • Например: MsgBox Columns( 9347).Address возвращает Изображение 3721.

Чтобы возвращать ТОЛЬКО буквенные ( ).Address(,0)),":")(0): Split((Columns( Column Index ).Address(,0)),":")(0)

  • Например: MsgBox Split((Columns( 2734).Address(,0)),":")(0) возвращает Изображение 3722.

Изображение 3723


ashleedawg
30 март 2018, в 15:55

Поделиться

Это доступно с помощью формулы:

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

и поэтому также может быть записана как функция VBA по запросу:

Function ColName(colNum As Integer) As String
    ColName = Split(Worksheets(1).Cells(1, colNum).Address, "$")(1)
End Function

Alistair Collins
09 дек. 2014, в 13:32

Поделиться

Это версия ответа robartsd (с ароматом однострочное решение Jan Wijninckx), используя рекурсию вместо цикла.

Public Function ColumnLetter(Column As Integer) As String
    If Column < 1 Then Exit Function
    ColumnLetter = ColumnLetter(Int((Column - 1) / 26)) & Chr(((Column - 1) Mod 26) + Asc("A"))
End Function

Я тестировал это со следующими входами:

1   => "A"
26  => "Z"
27  => "AA"
51  => "AY"
702 => "ZZ"
703 => "AAA" 
-1  => ""
-234=> ""

alexanderbird
04 фев. 2015, в 17:30

Поделиться

код robertsd является элегантным, но для того, чтобы сделать его перспективным, измените объявление n на тип long

Если вам нужна формула, чтобы избежать макросов, вот что работает до столбца 702 включительно

=IF(A1>26,CHAR(INT((A1-1)/26)+64),"")&CHAR(MOD(A1-1,26)+65)

где A1 — ячейка, содержащая номер столбца, который должен быть преобразован в буквы.

Jan Wijninckx
17 фев. 2014, в 04:18

Поделиться

Существует очень простой способ использования Excel: используйте свойство Range.Cells.Address, таким образом:

strCol = Cells(1, lngRow).Address(xlRowRelative, xlColRelative)

Это вернет адрес нужного столбца в строке 1. Возьмите его 1:

strCol = Left(strCol, len(strCol) - 1)

Обратите внимание, что это так быстро и мощно, что вы можете вернуть адреса столбцов, которые даже существуют!

Замените lngRow на нужный номер столбца, используя свойство Selection.Column!

flaviomorgado
29 июль 2014, в 13:45

Поделиться

Это будет работать независимо от того, какой столбец внутри вашей одной строки кода для ячейки, расположенной в строке X, в столбце Y:

Mid(Cells(X,Y).Address, 2, instr(2,Cells(X,Y).Address,"$")-2)

Если у вас есть ячейка с уникальным именем «Cellname»:

Mid(Cells(1,val(range("Cellname").Column)).Address, 2, instr(2,Cells(1,val(range("Cellname").Column)).Address,"$")-2)

Codeplayer
05 нояб. 2014, в 18:56

Поделиться

Вот простой лайнер, который можно использовать.

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 1)

Он будет работать только для обозначения столбца с 1 буквой, но он хорош для простых случаев. Если вам нужно работать только для двух буквенных обозначений, вы можете использовать следующее:

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 2)

Syd B
26 авг. 2014, в 14:46

Поделиться

Это функция, основанная на @DamienFennely answer выше. Если вы дадите мне большие пальцы, дайте ему большие пальцы!: P

Function outColLetterFromNumber(iCol as Integer) as String
    sAddr = Cells(1, iCol).Address
    aSplit = Split(sAddr, "$")
    outColLetterFromNumber = aSplit(1)
End Function

BrettFromLA
20 март 2014, в 20:23

Поделиться

Эта формула даст столбец на основе диапазона (т.е. A1), где диапазон — это одна ячейка. Если задан диапазон нескольких ячеек, он вернет верхнюю левую ячейку. Обратите внимание: обе ссылки на ячейки должны быть одинаковыми:

MID (CELL ( «адрес», A1), 2, SEARCH ( «$», CELL ( «адрес», A1), 2) -2)

Как это устроено:

CELL («свойство», «диапазон») возвращает определенное значение диапазона в зависимости от используемого свойства. В этом случае адрес ячейки. Свойство address возвращает значение $ [col] $ [row], то есть A1 → $ A $ 1. Функция MID анализирует значение столбца между символами $.

Thom
31 янв. 2018, в 19:40

Поделиться

Здесь простая функция в Pascal (Delphi).

function GetColLetterFromNum(Sheet : Variant; Col : Integer) : String;
begin
  Result := Sheet.Columns[Col].Address;  // from Col=100 --> '$CV:$CV'
  Result := Copy(Result, 2, Pos(':', Result) - 2);
end;

Jordi
08 сен. 2017, в 12:47

Поделиться

Function fColLetter(iCol As Integer) As String
  On Error GoTo errLabel
  fColLetter = Split(Columns(lngCol).Address(, False), ":")(1)
  Exit Function
errLabel:
  fColLetter = "%ERR%"
End Function

Krzysztof
04 март 2017, в 23:43

Поделиться

Вот поздний ответ, просто для упрощенного подхода с использованием Int() и If в случае столбцов с 1 символом:

Function outColLetterFromNumber(i As Integer) As String

    If i < 27 Then       'one-letter
        col = Chr(64 + i)
    ElseIf i < 677 Then  'two-letter
        col = Chr(64 + Int(i / 26)) & Chr(64 + i - (Int(i / 26) * 26))
    Else                 'three-letter
        col = Chr(64 + Int(i / 676)) & Chr(64 + Int(i - Int(i / 676) * 676) / 26)) & Chr(64 + i - (Int(i - Int(i / 676) * 676) / 26) * 26))
    End If

    outColLetterFromNumber = col

End Function

ib11
28 май 2016, в 22:56

Поделиться

Далее, на основе ответа brettdj, нужно сделать ввод номера столбца опционным. Если ввод номера столбца опущен, функция возвращает букву столбца ячейки, которая вызывает функцию. Я знаю, что это также может быть достигнуто с помощью всего лишь ColumnLetter(COLUMN()), но я подумал, что было бы хорошо, если бы оно умело это понимало.

Public Function ColumnLetter(Optional ColumnNumber As Long = 0) As String
    If ColumnNumber = 0 Then
        ColumnLetter = Split(Application.Caller.Address(True, False, xlA1), "$")(0)
    Else
        ColumnLetter = Split(Cells(1, ColumnNumber).Address(True, False, xlA1), "$")(0)
    End If
End Function

Компромисс этой функции заключается в том, что она будет очень немного медленнее, чем ответ brettdj из-за теста IF. Но это можно почувствовать, если функция многократно используется в течение очень большого количества раз.

Rosetta
19 март 2016, в 06:41

Поделиться

Решение от brettdj работает фантастически, но если вы сталкиваетесь с этим как потенциальное решение по той же причине, что и было, я думал, что предлагаю свое альтернативное решение.

Проблема, с которой я столкнулась, — это прокрутка к определенному столбцу на основе вывода функции MATCH(). Вместо того, чтобы преобразовать номер столбца в параллельную букву столбца, я решил временно переключить стиль ссылки с A1 на R1C1. Таким образом, я мог просто прокрутить до номера столбца, не зациклившись на функции VBA. Чтобы легко переключаться между двумя стилями ссылок, вы можете использовать этот код VBA:

Sub toggle_reference_style()

If Application.ReferenceStyle = xlR1C1 Then
  Application.ReferenceStyle = xlA1
Else
  Application.ReferenceStyle = xlR1C1
End If

End Sub

Will Ediger
12 фев. 2015, в 19:15

Поделиться

Это только для REFEDIT… вообще использовать код uphere
короткая версия… легко читается и понимается/
он использует poz из $

Private Sub RefEdit1_Change()

    Me.Label1.Caption = NOtoLETTER(RefEdit1.Value) ' you may assign to a variable  var=....'

End Sub

Function NOtoLETTER(REFedit)

    Dim First As Long, Second As Long

    First = InStr(REFedit, "$")                 'first poz of $
    Second = InStr(First + 1, REFedit, "$")     'second poz of $

    NOtoLETTER = Mid(REFedit, First + 1, Second - First - 1)   'extract COLUMN LETTER

End Function

Gabriel V
19 март 2016, в 18:24

Поделиться

Sub GiveAddress()
    Dim Chara As String
    Chara = ""
    Dim Num As Integer
    Dim ColNum As Long
    ColNum = InputBox("Input the column number")

    Do
        If ColNum < 27 Then
            Chara = Chr(ColNum + 64) & Chara
            Exit Do
        Else
            Num = ColNum / 26
            If (Num * 26) > ColNum Then Num = Num - 1
            If (Num * 26) = ColNum Then Num = ((ColNum - 1) / 26) - 1
            Chara = Chr((ColNum - (26 * Num)) + 64) & Chara
            ColNum = Num
        End If
    Loop

    MsgBox "Address is '" & Chara & "'."
End Sub

Chetan V.
04 фев. 2016, в 11:50

Поделиться

Письмо столбца из номера столбца можно извлечь, используя формулу, выполнив следующие шаги:
1. Вычислите адрес столбца с помощью формулы ADDRESS
2. Извлечь букву столбца с помощью функции MID и FIND

Пример:
1. АДРЕС (1000,1000,1)
результаты $ALL $1000
2. = MID (F15,2, FIND ( «$», F15,2) -2)
результаты ALL asuming F15 содержит результат шага 1

За один раз мы можем написать
 MID (АДРЕС (1000,1000,1), 2, FIND ( «$», адрес (1000,1000,1), 2) -2)

Bhanu Sinha
22 сен. 2015, в 22:19

Поделиться

Простой способ получить имя столбца

Sub column()

cell=cells(1,1)
column = Replace(cell.Address(False, False), cell.Row, "")
msgbox column

End Sub

Я надеюсь, что это поможет =)

cristobal
11 нояб. 2014, в 12:37

Поделиться

как просто преобразовать в число ascii и использовать Chr() для преобразования обратно в букву?

col_letter = Chr (Selection.Column + 96)

beef_supreme
15 июль 2016, в 17:28

Поделиться

PEDRO COUTO
30 март 2016, в 10:31

Поделиться

Здесь другой способ:

{

      Sub find_test2()

            alpha_col = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,W,Z" 
            MsgBox Split(alpha_col, ",")(ActiveCell.Column - 1) 

      End Sub

}

Mike Powell
28 июль 2014, в 14:17

Поделиться

Ещё вопросы

  • 1Как я могу запустить adb screenrecord на устройстве Android из Java и завершить запись экрана?
  • 0Динамическая строка с шестнадцатеричным значением как « 3»
  • 1Java создать список проблем с List <Type> myList = new ArrayList <Type> ();
  • 1Networx: найти длину максимальной клики узла
  • 1EntityState. Удалено при сохранении
  • 0Передача $ scope.Variable другой функции для установки значения в угловых
  • 1Ошибка: не удалось найти файл привязок. Пробовал: (Webpack)
  • 1RefreshControl реализация iOS и Android платформ
  • 1Доступ к MVC зарегистрированному пользователю из модели
  • 1Скрыть и показать панель навигации при прокрутке вверх
  • 1Я должен найти все ключи в HashMap, которые имеют значения = null, и удалить их. Как я могу это сделать? [Дубликат]
  • 1Java TimeZone с пользовательским идентификатором не учитывает переход на летнее время
  • 1Android: правильный способ отладки работающего приложения (ошибки времени выполнения / журнал)
  • 1Добавление простой функциональности Enter key в мою программу на Java
  • 0Сохраните несколько записей с доктриной и получая идентификатор каждой записи
  • 0jquery добавить / удалить tr не работает
  • 0Как найти изображения под тегом привязки с помощью JavaScript
  • 1Javascript заполнить массив оператором IF
  • 1Градиенты Pytorch существуют, но веса не обновляются
  • 1Android проверяет, находится ли тег nfc рядом
  • 0Создание раздвижного меню вне холста с помощью CSS
  • 1Создание пустого массива из байтов, упакованных с помощью struct
  • 1InvalidCastException, хотя явный оператор приведения определен
  • 0JQuery AJAX с разных URL
  • 1Файл загрузки React-native-fetch-blob
  • 1Переместить файл после успешной передачи FTP с использованием Java DSL
  • 0показать один и тот же идентификатор один раз, но в столбце подсчитать, сколько раз php
  • 1Как изменить выбор по умолчанию для поля выбора, используя настраиваемую форму с Flask-AppBuilder?
  • 1D3 Неопределенный атрибут в подсказке
  • 1Определить, если число кратно 7 или содержит число 7
  • 1Почему у меня эта Uncaught TypeError: (0, _normalizr.arrayOf) не является функцией?
  • 1Объединение / Слияние каждого Json Files, python
  • 0Blur событие запускается вместо клика
  • 0Добавить несколько переменных, превращенных в ссылки, один раз для каждого раздела
  • 1Сбой скрипта Python при работе на веб-сервере
  • 0Функция PHP include / require не работает
  • 1IIFE — это то же самое, что инициализация в разработке Java?
  • 0Html флажок отображается с помощью jquery. Необходимо проверить, изменилось ли значение флажка (отмечено / не отмечено)
  • 0Можем ли мы использовать Codeception для приложения, разработанного в php 4.4
  • 1Как получить отдельные метки ошибок для отображения C # asp.net
  • 1Почему интерфейс java.lang.AutoCloseable добавлен в Java 1.7
  • 1Не удалось заполнить значения Spinner из класса Bean с помощью Java в Android?
  • 1Отправить данные из формы Windows на консоль
  • 0Кнопка переключения действует как проблема радио
  • 0Проблема с вычислением значений для вложенного цикла
  • 0Получить все разговоры от одного пользователя в разных чатах
  • 0Как хранить данные 3D Graph (x, y, z) с помощью SQLAlchemy / Mysql?
  • 0Страница продукта и категории Magento не работает
  • 1Строковые хэш-коды
  • 0Создайте треугольник, который непрерывно вращается вокруг своей оси Y в OpenGl

Utility functions to get the column number (1 based) in Excel from the letter headers or the letters from the 1 based number

Introduction

In Excel VBA programming, it’s sometimes necessary to take user input in terms of column header letters and convert it to a number or the reverse. These two functions will help you do that. They are very simple mathematical manipulation on base 26.

I ported this code from many similar JavaScript examples you can find for Apps Script on GSuite, the particular author that wrote the original answer to a Stack Exchange question was «AdamL».

I had to rewrite a little for the VBA way of thinking!

Background

I sometimes write my Excel VBA with a reliance on configuration details rather than coded values. As things change, I often want to build or slice dynamic range selections from configured column headers, etc. These functions help with that.

Using the Code

Place the function declarations in a standard module and then use anywhere in your project as global functions:

debug.print columnToLetter(27) 
debug.print columnToLetter(702) 
debug.print columnToLetter(703) 
debug.print letterToColumn("AA") 
debug.print letterToColumn("ZZ") 
debug.print letterToColumn("AAA") 
Public Function columnToLetter(column As Integer) As String
  Dim temp As Integer
  Dim letter As String
  If column < 1 Or column > 16384 Then
    Err.Raise vbObjectError + 1024 + 99, "columnToLetter", _
        "Column numbers in the range 1 to 16384 (XFD) only. You tried: " & column
  End If
  Do While (column > 0)
  
    temp = (column - 1) Mod 26
    letter = Chr(temp + 65) + letter
    column = (column - temp - 1) / 26
  Loop
  columnToLetter = letter
End Function

Public Function letterToColumn(ByVal letter As String) As Integer
  Dim column  As Integer
  Dim length  As Integer
  Dim c As String
  Dim n As Integer
  Do
    c = Left(letter, 1)
    length = Len(letter)
    n = Asc(c) - 64
    If n < 1 Or n > 26 Then
      Err.Raise vbObjectError + 1024 + 99, "letterToColumn", _
          "Only letters A to Z are valid. You tried """ & c & """"
    End If
    column = column + n * 26 ^ (length - 1)
    
    letter = Mid(letter, 2) 
  Loop Until Len(letter) = 0
  letterToColumn = column
End Function

History

  • 2nd September, 2020: Initial tip

I have been a software developer for about 20 years, mostly in small IT department that means you do all the roles all the time from 1st line support to 3rd line diagnostics and help authoring. To be fair, I don’t do enough of the later which in turn causes way too much of the former with new staff always ready to show you how unintuitive your interfaces are!

I generally consider myself a «data plumber» with the majority of my work in back end SQL. If I could rule the world by writing a SPROC I would….

New definition of Stoicism: Someone who start a career in I.T. and still has a career in I.T. after 20 years!

Содержание

  1. Преобразование чисел столбцов Excel в алфавитные символы
  2. Введение
  3. Дополнительная информация
  4. Функция для преобразования номера столбца в букву?
  5. 27 ответов
  6. Номер столбца Excel из имени столбца
  7. Vba excel столбец буквой
  8. Как преобразовать букву столбца в число или наоборот в Excel?
  9. Преобразуйте букву столбца в число или наоборот с помощью формул
  10. Преобразование буквы столбца в число или наоборот с помощью функции, определяемой пользователем
  11. Лучшие инструменты для работы в офисе
  12. Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%
  13. Вкладка Office: интерфейс с вкладками в Office и упрощение работы

Преобразование чисел столбцов Excel в алфавитные символы

Введение

В этой статье описывается, как использовать функцию Microsoft Visual Basic для приложений (VBA) в Microsoft Excel для преобразования номеров столбцов в соответствующий буквенный указатель символов для того же столбца.

Например, столбец с номером 30 преобразуется в эквивалентные буквенные символы AD.

Дополнительная информация

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.

Функция ConvertToLetter работает с помощью следующего алгоритма:

  1. Введите iCol номер столбца. Остановите, iCol если значение меньше 1.
  2. Вычисляет частное и остаток от деления на (iCol — 1) 26 и сохраняется в переменных a и b .
  3. Преобразуйте b целочисленное значение в соответствующий алфавитный символ (0 => A, 25 => Z) и включите его в начале результирующей строки.
  4. Задайте iCol делитель и a цикл.

Например, номер столбца — 30.

(Цикл 1, шаг 1) Номер столбца не ниже 1, продолжайте.

(Цикл 1, шаг 2) Номер столбца меньше единицы делится на 26:

29 / 26 = 1 остаток 3. a = 1, b = 3

(Цикл 1, шаг 3) Укажите букву (b+1) алфавита:

3 + 1 = 4, четвертая буква — «D». Result = «D»

(Цикл 1, шаг 4) Назад к шагу 1 с iCol = a

(Цикл 2, шаг 1) Номер столбца не ниже 1, продолжайте.

(Цикл 2, шаг 2) Номер столбца меньше единицы делится на 26:

0 / 26 = 0 остаток 0. a = 0, b = 0

(Цикл 2, шаг 3) Укажите букву b+1 алфавита:

0 + 1 = 1, первая буква — «A» Result = «AD»

(Цикл 2, шаг 4) Назад к шагу 1 с iCol = a

(Цикл 3, шаг 1) Номер столбца меньше 1, остановка.

Следующую функцию VBA можно преобразовать только в один из способов преобразования числовых значений столбцов в эквивалентные буквенные символы:

Примечание Эта функция преобразует только целые числа, которые передаются в нее, в эквивалентный буквенно-цифровой текстовый символ. Он не изменяет внешний вид столбца или заголовков строк на физическом листе.

Источник

Функция для преобразования номера столбца в букву?

Есть ли у кого-нибудь функция Excel VBA, которая может возвращать буквенные буквы из числа?

Например, ввод 100 должен возвращать CV .

27 ответов

Эта функция возвращает букву столбца для заданного номера столбца.

код тестирования для столбца 100

Если вы не хотите использовать объект диапазона:

Что-то, что работает для меня, это:

Это вернет ссылку формата $AE $1 для вас.

Еще один способ сделать это. Brettdj answer заставлял меня думать об этом, но если вы используете этот метод, вам не нужно использовать альтернативный массив, вы можете перейти непосредственно к строке.

или может сделать его немного более компактным с этим

Обратите внимание, что это зависит от того, как вы ссылаетесь на строку 1 в объекте ячейки.

И решение с использованием рекурсии:

  • Например: MsgBox Columns( 9347).Address возвращает .

Чтобы возвращать ТОЛЬКО буквенные ( ).Address(,0)),»:»)(0) : Split((Columns( Column Index ).Address(,0)),»:»)(0)

  • Например: MsgBox Split((Columns( 2734).Address(,0)),»:»)(0) возвращает .

Это доступно с помощью формулы:

и поэтому также может быть записана как функция VBA по запросу:

ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ. Пожалуйста, проигнорируйте приведенную ниже функцию, @SurasinTancharoen удалось предупредить меня, что она разбита на n = 53 .
Для тех, кто заинтересован, вот другие сломанные значения чуть ниже n = 200 :

КОНЕЦ ОБНОВЛЕНИЯ

Ниже приведена следующая функция:

  • Microsoft Office Excel 2007
  • Стандартная версия Microsoft Excel 2002
  • Стандартная версия Microsoft Excel 2000
  • Стандартная версия Microsoft Excel 97

Это версия ответа robartsd (с ароматом однострочное решение Jan Wijninckx), используя рекурсию вместо цикла.

Я тестировал это со следующими входами:

код robertsd является элегантным, но для того, чтобы сделать его перспективным, измените объявление n на тип long

Если вам нужна формула, чтобы избежать макросов, вот что работает до столбца 702 включительно

где A1 — ячейка, содержащая номер столбца, который должен быть преобразован в буквы.

Существует очень простой способ использования Excel: используйте свойство Range.Cells.Address , таким образом:

Это вернет адрес нужного столбца в строке 1. Возьмите его 1 :

Обратите внимание, что это так быстро и мощно, что вы можете вернуть адреса столбцов, которые даже существуют!

Замените lngRow на нужный номер столбца, используя свойство Selection.Column !

Это будет работать независимо от того, какой столбец внутри вашей одной строки кода для ячейки, расположенной в строке X, в столбце Y:

Если у вас есть ячейка с уникальным именем «Cellname»:

Вот простой лайнер, который можно использовать.

Он будет работать только для обозначения столбца с 1 буквой, но он хорош для простых случаев. Если вам нужно работать только для двух буквенных обозначений, вы можете использовать следующее:

Это функция, основанная на @DamienFennely answer выше. Если вы дадите мне большие пальцы, дайте ему большие пальцы!: P

Эта формула даст столбец на основе диапазона (т.е. A1), где диапазон — это одна ячейка. Если задан диапазон нескольких ячеек, он вернет верхнюю левую ячейку. Обратите внимание: обе ссылки на ячейки должны быть одинаковыми:

MID (CELL ( «адрес», A1), 2, SEARCH ( «$», CELL ( «адрес», A1), 2) -2)

Как это устроено:

CELL («свойство», «диапазон») возвращает определенное значение диапазона в зависимости от используемого свойства. В этом случае адрес ячейки. Свойство address возвращает значение $ [col] $ [row], то есть A1 → $ A $ 1. Функция MID анализирует значение столбца между символами $.

Здесь простая функция в Pascal (Delphi).

Вот поздний ответ, просто для упрощенного подхода с использованием Int() и If в случае столбцов с 1 символом:

Далее, на основе ответа brettdj, нужно сделать ввод номера столбца опционным. Если ввод номера столбца опущен, функция возвращает букву столбца ячейки, которая вызывает функцию. Я знаю, что это также может быть достигнуто с помощью всего лишь ColumnLetter(COLUMN()) , но я подумал, что было бы хорошо, если бы оно умело это понимало.

Компромисс этой функции заключается в том, что она будет очень немного медленнее, чем ответ brettdj из-за теста IF . Но это можно почувствовать, если функция многократно используется в течение очень большого количества раз.

Решение от brettdj работает фантастически, но если вы сталкиваетесь с этим как потенциальное решение по той же причине, что и было, я думал, что предлагаю свое альтернативное решение.

Проблема, с которой я столкнулась, — это прокрутка к определенному столбцу на основе вывода функции MATCH(). Вместо того, чтобы преобразовать номер столбца в параллельную букву столбца, я решил временно переключить стиль ссылки с A1 на R1C1. Таким образом, я мог просто прокрутить до номера столбца, не зациклившись на функции VBA. Чтобы легко переключаться между двумя стилями ссылок, вы можете использовать этот код VBA:

Это только для REFEDIT. вообще использовать код uphere короткая версия. легко читается и понимается/ он использует poz из $

Источник

Номер столбца Excel из имени столбца

Как получить номер столбца из имени столбца в Excel с помощью макроса Excel?

Думаю, ты хочешь этого?

Имя столбца для столбца

Изменить. Также включите обратное, что вы хотите

Номер столбца для имени столбца

FOLLOW UP

Как если бы у меня было поле зарплаты на самом верху, скажем, в ячейке C (1,1) теперь, если я изменю файл и сдвиг столбца зарплаты в какое-то другое место скажу F (1,1), тогда мне придется изменить код, поэтому я хочу, чтобы код проверялся на зарплату и находил номер столбца, а затем выполнял остальные операции в соответствии с этим номером столбца.

В таком случае я бы рекомендовал использовать .FIND См. этот пример ниже

Пока вы искали решение VBA, это был мой лучший результат в google при поиске решения формулы, поэтому я добавлю это для всех, кто пришел сюда для этого, как я:

Формула Excel возвращает номер из столбца (из комментария @A. Klomp выше), где ячейка A1 содержит ваши столбцовые письма:

Поскольку косвенная функция является изменчивой, она пересчитывается всякий раз, когда изменяется какая-либо ячейка, поэтому, если у вас их много, это может замедлить работу вашей книги. Рассмотрим другое решение, такое как функция “code”, которая дает вам номер для символа ASCII, начиная с “A” в 65. Обратите внимание, что для этого вам нужно будет проверить, сколько цифр указано в имени столбца, и изменить результат в зависимости от “A”, “BB” или “CCC”.

Формула Excel, чтобы вернуть букву столбца из числа (из этого предыдущего вопроса Как преобразовать номер столбца (например, 127) в столбец Excel (например, AA), на который отвечает @Ian), где A1 содержит номер столбца:

Обратите внимание, что оба этих метода работают независимо от количества букв в имени столбца.

Надеюсь, это поможет кому-то еще.

Запишите и запустите следующий код в окне Immediate Window

Например, ?cells(,»BYL»).column вернется в 2014 году. Код нечувствителен к регистру, поэтому вы можете написать ?cells(,»BYL»).column , а вывод все равно будет таким же.

Вы можете пропустить все это и просто поместить свои данные в таблицу. Затем обратитесь к таблице и заголовку, и она будет полностью динамичной. Я знаю, что это с 3 лет назад, но кто-то все еще может найти это полезным.

Вы также можете использовать:

Вы даже можете использовать эту систему ссылок в формулах рабочих таблиц. Это очень динамично.

Надеюсь, это поможет!

На основании ответа Анастасии. Я думаю, что это самая короткая команда VBA:

Предостережение: единственное условие для работы этого кода – активная рабочая таблица, поскольку Columns эквивалентны ActiveSheet.Columns . 😉

Здесь чисто решение VBA, потому что Excel может содержать соединенные ячейки:

По сути, эта функция работает так же, как любая функция Hex to Dec, за исключением того, что она принимает только алфавитные символы (A = 1, B = 2,…).
Самый правый символ считается одинарным, каждый символ слева в 26 раз больше символа справа от него (что составляет AA = 27 [1 + 26], AAA = 703 [1 + 26 + 676]).
Использование UCase() делает эту функцию без учета регистра.

Источник

Vba excel столбец буквой

Как преобразовать букву столбца в число или наоборот в Excel?

В этой статье я расскажу о том, как преобразовать букву столбца в номер столбца или преобразовать номер столбца в букву. Например, преобразовать букву AA в столбце в число 27 или преобразовать номер столбца 100 в букву CV. Чтобы получить решение следующими методами.

Преобразуйте букву столбца в число или наоборот с помощью формул

Чтобы преобразовать букву столбца или метку в число или наоборот, приведенные ниже формулы могут помочь вам, пожалуйста, сделайте следующее:

Преобразование буквы столбца в номер столбца:

Пожалуйста, введите эту формулу: = КОЛОНКА (КОСВЕННО («AB1»)) в пустую ячейку, где вы хотите найти преобразованный результат, а затем нажмите Enter ключ для получения номера столбца:

Примечание: В приведенной выше формуле AB — буква столбца, на основе которой вы хотите получить номер столбца, вы можете изменить его по своему усмотрению.

Преобразуйте номер столбца в букву столбца:

Введите эту формулу: = ПОДСТАВИТЬ (АДРЕС (1,200,4); 1; «») в пустую ячейку, чтобы получить результат, а затем нажмите Enter чтобы получить букву столбца следующим образом:

Примечание: В приведенной выше формуле красное число 200 — это номер столбца, который вы хотите преобразовать в букву столбца, вы можете изменить его по своему усмотрению.

Преобразование буквы столбца в число или наоборот с помощью функции, определяемой пользователем

Кроме формул, здесь я также могу ввести Функция, определяемая пользователем справиться с этой задачей.

Преобразование буквы столбца в номер столбца:

1. Удерживайте ALT + F11 ключи, затем он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: преобразовать букву столбца в номер столбца:

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите следующую формулу: = Tocolnum («ВВ») (VV — буква столбца, в которой вы хотите преобразовать число. ) в пустую ячейку и нажмите Enter ключ, чтобы получить номер столбца, см. снимок экрана:

Преобразуйте номер столбца в букву столбца:

1. Удерживайте ALT + F11 ключи, затем он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: преобразовать номер столбца в букву столбца:

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите следующую формулу: = ToColletter (50) (50 — номер столбца, который вы хотите преобразовать в букву. ) в пустую ячейку и нажмите Enter ключ, чтобы получить номер столбца, см. снимок экрана:

Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма .
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон .
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы . Предотвращение дублирования ячеек; Сравнить диапазоны .
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор .
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули , Флажки и многое другое .
  • Извлечь текст , Добавить текст, Удалить по позиции, Удалить пробел ; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии .
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом .
  • Комбинируйте книги и рабочие листы ; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов ; Пакетное преобразование xls, xlsx и PDF . Pivot Table Grouping by week number, day of week and more. Show Unlocked, Locked Cells by different colors; Highlight Cells That Have Formula/Name . —>
  • Более 300 мощных функций . Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint , Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

Публичная функция AlphabetInteger (буква ByVal как строка) как целое число
Dim N как целое число
буква = Strings.UCase(буква)
Если Буква = «А» Тогда
N = 1
ИначеЕсли буква = «Б» Тогда
N = 2
ИначеЕсли буква = «С» Тогда
N = 3
ИначеЕсли буква = «Д» Тогда
N = 4
ИначеЕсли буква = «Е» Тогда
N = 5
ИначеЕсли буква = «Ф» Тогда
N = 6
ИначеЕсли буква = «Г» Тогда
N = 7
ИначеЕсли буква = «Н» Тогда
N = 8
ИначеЕсли буква = «Я» Тогда
N = 9
ИначеЕсли буква = «J» Тогда
N = 10
ИначеЕсли буква = «К» Тогда
N = 11
ИначеЕсли буква = «Л» Тогда
N = 12
ИначеЕсли буква = «М» Тогда
N = 13
ИначеЕсли буква = «Н» Тогда
N = 14
ИначеЕсли буква = «О» Тогда
N = 15
ИначеЕсли буква = «П» Тогда
N = 16
ИначеЕсли буква = «Q» Тогда
N = 17
ИначеЕсли буква = «Р» Тогда
N = 18
ИначеЕсли буква = «С» Тогда
N = 19
ИначеЕсли буква = «Т» Тогда
N = 20
ИначеЕсли буква = «У» Тогда
N = 21
ИначеЕсли буква = «В» Тогда
N = 22
ИначеЕсли буква = «W» Тогда
N = 23
ИначеЕсли буква = «Х» Тогда
N = 24
ИначеЕсли буква = «Y» Тогда
N = 25
ИначеЕсли буква = «З» Тогда
N = 26
Еще
N = 0
End If
Алфавитцелое = N
End Function

Общедоступная функция ColumnNumber (ByVal columnLetter As String) As Integer
Dim I как целое число
Dim sLength как целое число
Dim N как целое число
Dim A как целое число
Dim P как целое число
Dim C как строка

Источник

В этой статье я расскажу о том, как преобразовать букву столбца в номер столбца или преобразовать номер столбца в букву. Например, преобразовать букву AA в столбце в число 27 или преобразовать номер столбца 100 в букву CV. Чтобы получить решение следующими методами.

Преобразуйте букву столбца в число или наоборот с помощью формул

Преобразование буквы столбца в число или наоборот с помощью функции, определяемой пользователем


стрелка синий правый пузырь Преобразуйте букву столбца в число или наоборот с помощью формул

Чтобы преобразовать букву столбца или метку в число или наоборот, приведенные ниже формулы могут помочь вам, пожалуйста, сделайте следующее:

Преобразование буквы столбца в номер столбца:

Пожалуйста, введите эту формулу: = КОЛОНКА (КОСВЕННО («AB1»)) в пустую ячейку, где вы хотите найти преобразованный результат, а затем нажмите Enter ключ для получения номера столбца:

doc преобразовать метку столбца в номер 1

Примечание: В приведенной выше формуле AB — буква столбца, на основе которой вы хотите получить номер столбца, вы можете изменить его по своему усмотрению.

Преобразуйте номер столбца в букву столбца:

Введите эту формулу: = ПОДСТАВИТЬ (АДРЕС (1,200,4); 1; «») в пустую ячейку, чтобы получить результат, а затем нажмите Enter чтобы получить букву столбца следующим образом:

doc преобразовать метку столбца в номер 2

Примечание: В приведенной выше формуле красное число 200 — это номер столбца, который вы хотите преобразовать в букву столбца, вы можете изменить его по своему усмотрению.


стрелка синий правый пузырь Преобразование буквы столбца в число или наоборот с помощью функции, определяемой пользователем

Кроме формул, здесь я также могу ввести Функция, определяемая пользователем справиться с этой задачей.

Преобразование буквы столбца в номер столбца:

1. Удерживайте ALT + F11 ключи, затем он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: преобразовать букву столбца в номер столбца:

Public Function ToColNum(ColN)
    ToColNum = Range(ColN & 1).Column
End Function

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите следующую формулу: = Tocolnum («ВВ») (VV — буква столбца, в которой вы хотите преобразовать число. ) в пустую ячейку и нажмите Enter ключ, чтобы получить номер столбца, см. снимок экрана:

doc преобразовать метку столбца в номер 3

Преобразуйте номер столбца в букву столбца:

1. Удерживайте ALT + F11 ключи, затем он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: преобразовать номер столбца в букву столбца:

Public Function ToColletter(Collet)
    ToColletter = Split(Cells(1, Collet).Address, "$")(1)
End Function

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите следующую формулу: = ToColletter (50) (50 — номер столбца, который вы хотите преобразовать в букву. ) в пустую ячейку и нажмите Enter ключ, чтобы получить номер столбца, см. снимок экрана:

doc преобразовать метку столбца в номер 4


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (10)


Номинальный 5 из 5


·


рейтинги 1

Понравилась статья? Поделить с друзьями:
  • Excel vba последняя ячейка строки
  • Excel vba последняя строка столбец
  • Excel vba последний столбец в строке
  • Excel vba последний не пустой столбец
  • Excel vba последнее значение в строке