- ベストアンサー
エクセルで列名の取得
一定でないデータ範囲の最後の列でソートするマクロを作りたいのですが、列名の取得はどうしたらいいのでしょうか ActiveCell.Columnでは列番号になってしまいます。 教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
参考までに。(^^;;; Sub Test() Dim Clm Clm = Selection.Address(columnabsolute:=False) Clm = Split(Clm, ":") Clm = Mid(Clm(1), 1, InStr(Clm(1), "$") - 1) End Sub 以上です。
その他の回答 (4)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Sub test() MsgBox ColumnName(selection) End Sub Private Function ColumnName(r As Range) Dim s, a, x s = r.AddressLocal(columnabsolute:=False, rowabsolute:=False) '指定した範囲を相対参照で得る a = Split(s, ":") '後ろのセルを取り出す x = Mid(a(1), 2, 1) '2文字目を取り出す If "1" <= x And x <= "9" Then '数字なら ColumnName = Mid(a(1), 1, 1) '列名は1文字 Else ColumnName = Mid(a(1), 1, 2) '列名は2文字 End If End Function サンプルは、指定した範囲の最後の列の列名を表示します。
お礼
有難うございます. 参考になりました。
- marbin
- ベストアンサー率27% (636/2290)
#1の記述を↓のように変えると、 列番号が取得できます。 s = Range("iv1").End(xlToLeft).Cells.Address(0, 0) ↓ s = Range("iv1").End(xlToLeft).Column
お礼
早速有難うございます。 試してみましたが列番号の数字が取得できるようです。 列名(ABとかCD)を取得してソートに使いたいのですがどうしたらいいでしょうか。
- marbin
- ベストアンサー率27% (636/2290)
列名でしたね。 セルアドレスを勘違いしてました。 失礼しました。
- marbin
- ベストアンサー率27% (636/2290)
↓をお試しください。 ヒントになると思います。 Sub saigo() Dim s As String s = Range("iv1").End(xlToLeft).Cells.Address(0, 0) MsgBox s End Sub
お礼
有難うございます. 参考になりました。