source

열 이름의 Excel 열 번호

nicesource 2023. 5. 29. 10:59
반응형

열 이름의 Excel 열 번호

Excel 매크로를 사용하여 Excel의 열 이름에서 열 번호를 가져오는 방법은 무엇입니까?

당신은 이걸 원하는 것 같아요?

열 이름에서 열 번호로

Sub Sample()
    ColName = "C"
    Debug.Print Range(ColName & 1).Column
End Sub

편집: 원하는 것의 반대도 포함합니다.

열 번호를 열 이름으로

Sub Sample()
    ColNo = 3
    Debug.Print Split(Cells(, ColNo).Address, "$")(1)
End Sub

따르다

만약 내가 맨 위에 급여 필드가 있다면, 내가 지금 셀 C(1,1)에서 파일을 변경하고 급여 열을 다른 곳으로 이동하면 F(1,1)라고 말하면 나는 코드를 수정해야 할 것이다. 그래서 나는 코드가 급여를 확인하고 열 번호를 찾은 다음 그 열 번호에 따라 나머지 작업을 수행하기를 원합니다.

이러한 경우에는 다음을 사용할 것을 권장합니다..FIND아래 예제 참조

Option Explicit

Sub Sample()
    Dim strSearch As String
    Dim aCell As Range

    strSearch = "Salary"

    Set aCell = Sheet1.Rows(1).Find(What:=strSearch, LookIn:=xlValues, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)

    If Not aCell Is Nothing Then
        MsgBox "Value Found in Cell " & aCell.Address & _
        " and the Cell Column Number is " & aCell.Column
    End If
End Sub

스냅샷

여기에 이미지 설명 입력

VBA 솔루션을 찾는 동안 공식 솔루션을 찾을 때 구글에서 가장 좋은 결과를 얻었습니다. 따라서 저처럼 여기에 오신 모든 분들을 위해 이것을 추가하겠습니다.

열 문자에서 숫자를 반환하는 Excel 공식(@A에서).위의 Klomp 설명)에서 셀 A1은 열 문자를 유지합니다.

= 열(간접(A1&"1"))

간접 함수는 휘발성이므로 셀이 변경될 때마다 다시 계산되므로 이러한 셀이 많으면 워크북 속도가 느려질 수 있습니다.65에서 'A'로 시작하는 ASCII 문자의 숫자를 제공하는 '코드' 기능과 같은 다른 솔루션을 생각해 보십시오.이 작업을 수행하려면 열 이름에 숫자가 몇 개 있는지 확인하고 'A', 'BB' 또는 'CCC'에 따라 결과를 변경해야 합니다.

숫자에서 문자를 반환하는 Excel 공식(이 이전 질문에서 열 번호(예: 127)를 Excel 열로 변환하는 방법) AA), @Ian)이 응답합니다. 여기서 A1은 열 번호를 보유합니다.

= 할당(주소(1,A1,4),"1",")

이 두 가지 방법은 열 이름에 있는 문자 수에 관계없이 모두 작동합니다.

이것이 다른 사람에게 도움이 되기를 바랍니다.

이 모든 것을 건너뛰고 데이터를 테이블에 저장할 수 있습니다.그런 다음 표와 머리글을 참조하면 완전히 동적이 될 것입니다.나는 이것이 3년 전의 것이라는 것을 알지만 누군가는 여전히 이것이 유용하다고 생각할지도 모릅니다.

코드 예제:

Activesheet.Range("TableName[ColumnName]").Copy

다음을 사용할 수도 있습니다.

activesheet.listobjects("TableName[ColumnName]").Copy

워크시트 공식에서도 이 참조 시스템을 사용할 수 있습니다.굉장히 역동적입니다.

이것이 도움이 되길 바랍니다!

즉시 창에서 다음 코드 작성 및 실행

?cells(,"type the column name here").column

를 들어 를들면입니다.?cells(,"BYL").column2014년으로 돌아갑니다.코드는 대소문자를 구분하지 않으므로 다음과 같이 기록할 수 있습니다.?cells(,"byl").column출력은 동일하게 유지됩니다.

아나스타시야의 대답을 근거로.이것이 가장 짧은 vba 명령이라고 생각합니다.

Option Explicit

Sub Sample()
    Dim sColumnLetter as String
    Dim iColumnNumber as Integer

    sColumnLetter = "C"
    iColumnNumber = Columns(sColumnLetter).Column

    MsgBox "The column number is " & iColumnNumber
End Sub

이활성화되어 입니다. " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "Columns는 와동합다니등다에 합니다.ActiveSheet.Columns. ;)

Excel은 결합된 셀을 수용할 수 있기 때문에 순수한 VBA 솔루션은 다음과 같습니다.

Public Function GetIndexForColumn(Column As String) As Long
    Dim astrColumn()    As String
    Dim Result          As Long
    Dim i               As Integer
    Dim n               As Integer

    Column = UCase(Column)
    ReDim astrColumn(Len(Column) - 1)
    For i = 0 To (Len(Column) - 1)
        astrColumn(i) = Mid(Column, (i + 1), 1)
    Next
    n = 1
    For i = UBound(astrColumn) To 0 Step -1
        Result = (Result + ((Asc(astrColumn(i)) - 64) * n))
        n = (n * 26)
    Next
    GetIndexForColumn = Result
End Function

기본적으로 이 함수는 알파벳 문자(A = 1, B = 2, ...)만 사용한다는 점을 제외하고는 Hex to Dec 함수와 동일합니다.가장 오른쪽에 있는 문자는 단일 문자로 카운트되며, 왼쪽에 있는 각 문자는 오른쪽 문자의 26배로 카운트됩니다(AA = 27 [1 + 26], AAA = 703 [1 + 26 + 676]).UCase()를 사용하면 이 함수는 대소문자를 구분하지 않습니다.

에 열 가장 열번호 를 얻 는 가 간 방 같 다 습 니 다 과 음 은 법 한 단 장 다 니 같 습 ▁in : ▁number 열 과 ▁is ▁column 다 ▁to 음
Sub Sample() ColName = ActiveCell.Column MsgBox ColName End Sub

언급URL : https://stackoverflow.com/questions/10106465/excel-column-number-from-column-name

반응형