• ベストアンサー

エクセルで列名の取得

一定でないデータ範囲の最後の列でソートするマクロを作りたいのですが、列名の取得はどうしたらいいのでしょうか ActiveCell.Columnでは列番号になってしまいます。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.5

参考までに。(^^;;; Sub Test()  Dim Clm  Clm = Selection.Address(columnabsolute:=False)  Clm = Split(Clm, ":")  Clm = Mid(Clm(1), 1, InStr(Clm(1), "$") - 1) End Sub 以上です。

oldhisa
質問者

お礼

有難うございます. 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

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 サンプルは、指定した範囲の最後の列の列名を表示します。

oldhisa
質問者

お礼

有難うございます. 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

#1の記述を↓のように変えると、 列番号が取得できます。 s = Range("iv1").End(xlToLeft).Cells.Address(0, 0) ↓ s = Range("iv1").End(xlToLeft).Column

oldhisa
質問者

お礼

早速有難うございます。 試してみましたが列番号の数字が取得できるようです。 列名(ABとかCD)を取得してソートに使いたいのですがどうしたらいいでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

列名でしたね。 セルアドレスを勘違いしてました。 失礼しました。

全文を見る
すると、全ての回答が全文表示されます。
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

↓をお試しください。 ヒントになると思います。 Sub saigo() Dim s As String s = Range("iv1").End(xlToLeft).Cells.Address(0, 0) MsgBox s End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 列名の取得方法は?

    VB6.0 ORACLE10g Win20003Server WinXP開発 よろしくお願いします。 列名(フィールド名称)を取得する方法(SQL)がありましたら、お願いします。 データの内容はわかるんですが、列名(どの列に入っているのか)を知りたいと思っています。 よろしくお願いします。

  • VBAで列名で判定して列データを取得したい。

    Exel2003のマクロで特定の列データを別のシートに貼り付けたいのですが。 初めて、BVAを触るのでどのような命令があるのかさえ把握しきれてません。 流れとしては、以下でよいのでしょうか? (1)列名で判定して列を特定する (2)(1)で特定した列のデータを取得する それとも、一発で出来る関数があるのでしょうか?

  • エクセル ボタンでソートしたい

    教えてください エクセル表で各列でソートしたい 列毎のマクロを書くのは大変なので、ボタンを表示しておき、その列のセルをクリックしてactive にしてから、ボタンをクリックしたらソートできるようにしたい。 Dim retuban retuban = XXXXXX strkey1 = retuban Selection.Sort Key1:=Cells(3, strkey1), のようにやればいいと思うのですが XXXXXの列名(AAなど)を取得するマクロがうまくいきません よろしくお願いします。

  • TIMESTAMP型が含まれるテーブルの列名の取得

    Oracle 11gを使用しているSQL初心者です。 テーブルの列名を取得する方法についての質問です。 テーブルの列名を取得するときは以下のSQLで取れると思っています。 select column_name from user_tab_columns where table_name = 'テーブル名'; --実行結果-- COLUMN_NAME ------------------------------ NAME1 NAME2 しかし、テーブルにTIMESTAMP型が含まれていると 「レコードが選択されませんでした。」 と表示されます。 TIMESTAMP型が含まれるテーブルは上記のSQLでは取得できないのでしょうか。 TIMESTAMP型が含まれるテーブルの列名の取得方法をご存知の方がいらっしゃいましたら、 ご教示ください。よろしくお願い致します。

  • 列の番号ではなく文字列で取得するには

    エクセル2003 Sub test() MsgBox ActiveCell.Column End Sub で現在カーソルのあるセルの列番号「3」が取得させるのですが 「C」と言う風に列の文字列で取得するにはどうすればいいのでしょうか? よろしくお願いします。

  • [ASP+SQLserver]列名の取得・・・

    こんにちわ!皆さん!! 今日は、ASPで列名を取得する方法が見つからず悩んでします。 例えば Syohin = rsSyohinMaster("商品名") とすれば、テーブル内の「商品名」という列名に入っているデータをSyohinに格納できますよね? そうではなくて・・・ Retsumei = rsSyohinMaster(1) とかやったら、 Retsumei に 「()」内で指定した番目にある列名を(例えば:商品名)格納 したいんです! そういうコマンドないですか? 実際は指定されたテーブルの列名を配列に一気に取り込む処理を考えています。 いかがでしょうか? 宜しくお願い致します!

  • Excellの列名を得るには?

    Excellの列名を得るには? ワークシート上で通常列名はA,B,Cです。 ところが、=cell("col",X1)では1,2,3・・となります。 このcolは列番号と説明されています。列名としてA,B,C・・と表現するにはこの式をどう変更しましょうか?

  • SQLServerで列名取得

    Microsoft SQL Server2014 ManagementStudio を Windows7 で使用しています。 テーブルのカラム(列)名を取得したくて いろいろ調べてみましたが SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'TestTable' ORDER BY ORDINAL_POSITION とか、 select name from Sys.Columns where object_id = object_id('TestTable') を実行しても、空のデータしか表示されません。 何がまちがっているのか教えてください。

  • エクセルのソートのマクロ

    エクセルでのソートのマクロを教えてください。  範囲選択は手動でその都度変更します。優先列、昇順は変更ありません。 例えば、AからE列までデータがあり、第一優先列をD列、第二優先列をA列として、それぞれ昇順でソートします。 範囲はその都度手動で複数行を全列選択します。 つまり、適宜、複数行を選択してからこのマクロを実行すれば常に先の形式でソートできるようにしたいです。  わかりにくい記述で恐縮ですがよろしくお願いします。

  • とほほのエクセルマクロ

    以下の文の[-1899]の部分を可変型にしたいのですが。 どなたかご存知有りませんか? ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1899]C:R[-1]C,""いっしょだよ"")" ==================================== マクロの説明です。 ==================================== エクセルマクロでsheet1にデータを入力していって、 sheet1のD列内に同一のコードがないかをチェックするために sheet1のコピーを作成してD列でソートしてから D列の1行目=2行目ならK列に”いっしょだよ”という メッセージを出すようにIF文を書きこんでいきます。 最後にこの”いっしょだよ”というメッセージが何件あったかを見たいので、 一番下の行+1行目に ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1899]C:R[-1]C,""いっしょだよ"")" という文を入れたのですがこれだと自分が居る一つ上のセルから 1899上までしか行かないのですが、毎回データを入力して行数は増えていってしまいます。 どのような、文にしたらよいのか教えてください。 お願いいたします。

専門家に質問してみよう