Excelマクロを使用してExcelの列名から列番号を取得する方法は?
7 に答える
あなたはこれが欲しいと思いますか?
列名から列番号へ
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 ソリューションを探していましたが、数式ソリューションを探していたとき、これが 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","")
これらの方法はどちらも、列名の文字数に関係なく機能することに注意してください。
これが他の誰かに役立つことを願っています。
イミディエイト ウィンドウで次のコードを記述して実行します。
?cells(,"type the column name here").column
たとえば、?cells(,"BYL").column
2014 が返されます。コードは大文字と小文字を区別しないため、記述?cells(,"byl").column
しても出力は同じになります。