[excel] 열 번호를 문자로 변환하는 기능?

누구든지 숫자에서 열 문자를 반환 할 수있는 Excel VBA 기능이 있습니까?

예를 들어 100 을 입력 하면을 반환해야합니다 CV.



답변

이 함수는 주어진 열 번호에 대한 열 문자를 반환합니다.

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


답변

범위 객체를 사용하지 않으려는 경우 :

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


답변

나를 위해 일하는 것은 다음과 같습니다.

Cells(Row,Column).Address 

그러면 $ AE $ 1 형식 참조가 반환됩니다.


답변

** <code> </ code> <code> Columns (</ code> *** <code> Column Index </ code> *** <code>). Address </ code> <code> </ code> **

  • 예를 들어, MsgBox Columns( 9347 ).Address Returns ** <code> $ MUM : $ MUM </ code> ** .

열 문자 반환하려면 :Split((Columns(Column Index).Address(,0)),":")(0)

  • 예를 들어, MsgBox Split((Columns( 2734 ).Address(,0)),":")(0) Returns ** <code> DAD </ code> ** .

  더 많은 예



답변

이 작업을 수행하는 또 다른 방법입니다. Brettdj의 대답 은 이것을 생각하게 만들었지만이 방법을 사용하면 변형 배열을 사용할 필요가 없으므로 문자열로 직접 이동할 수 있습니다.

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

또는 이것으로 조금 더 작게 만들 수 있습니다.

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

이것은 셀 객체에서 행 1을 참조하는 것에 달려 있습니다.


답변

그리고 재귀를 사용하는 솔루션 :

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


답변

이것은 공식을 사용하여 사용할 수 있습니다.

=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