77

Excelマクロを使用してExcelの列名から列番号を取得する方法は?

4

7 に答える 7

166

あなたはこれが欲しいと思いますか?

列名から列番号へ

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

スナップショット

ここに画像の説明を入力

于 2012-04-11T13:48:07.177 に答える
4

あなたは VBA ソリューションを探していましたが、数式ソリューションを探していたとき、これが Google での私のトップの結果でした。

列文字から数値を返す Excel 式(上記の @A. Klomp のコメントから)。セル A1 には列文字が保持されます。

=列(間接(A1&"1"))

間接関数は揮発性であるため、セルが変更されるたびに再計算されるため、これらが多数ある場合、ワークブックの速度が低下する可能性があります。「コード」関数などの別の解決策を検討してください。これは、65 の「A」で始まる ASCII 文字の番号を提供します。これを行うには、列名の桁数を確認する必要があることに注意してください。 「A」、「BB」、または「CCC」に応じて結果を変更します。

数値から列文字を返す Excel 式(この前の質問How to convert a column number (eg. 127) into an Excel column (eg. AA)、@Ian が回答)、ここで A1 は列番号を保持します。

=substitute(アドレス(1,A1,4),"1","")

これらの方法はどちらも、列名の文字数に関係なく機能することに注意してください。

これが他の誰かに役立つことを願っています。

于 2015-07-07T15:02:30.260 に答える
1

イミディエイト ウィンドウで次のコードを記述して実行します。

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

たとえば、?cells(,"BYL").column2014 が返されます。コードは大文字と小文字を区別しないため、記述?cells(,"byl").columnしても出力は同じになります。

于 2016-08-21T09:16:57.577 に答える