- ベストアンサー
EXCEL2010 VBA 列名の変更
- EXCEL2010 VBAを使用してA列の列名を変更する方法を教えてください。
- 現在、A1には「SID00」という列名があり、B1以降は「Q1_01」「Q1_02」などの列名が続いていますが、これを「SID00」「Q1_01」「SID01」「Q1_02」のように変更したいと思っています。
- 現在はVBAのLOOPを使用し、列の挿入を行っているのですが、うまくいきません。どのようにすれば列名を変更できるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 Sub 一例() 項目名 = Left(Cells(1, 1), 3) For i = Cells(1, Columns.Count).End(xlToLeft).Column To 3 Step -1 Columns(1).Copy Columns(i).Insert Shift:=xlToRight Cells(1, i) = 項目名 & Format(i - 2, "00") Next Application.CutCopyMode = False End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
質問がわかりにくい。 質問文に誤りがあるのでは?>A列をコピーし、ほんとにA列?。私は第1行目かと思ったが。 下記コードもそのつもりなので間違っていたら、すべて無視して。 また模擬実例を挙げて説明すること。そうすれば私のようなことは言わなくて済むのだ。 初心者ならコードなどどうでもよい。良さそうな回答のやり方を勉強せよ。 まあやってみた証に挙げておくべきだが。 ーー 私なら、コピーなどしない。 ロジック的(=ルールをコードにして)に見出しを作る。 Sub test01() i = 5 '見出しを入れる行 Cells(i, "A") = Cells(1, "A") r = Range("IV1").End(xlToLeft).Column z = Cells(1, r) MsgBox z x = Cells(i, "A") n = Val(Right(x, Len(x) - 2)) For c = 1 To 10 Step 2 Cells(i, c) = "SID" & Format(n, "00") Cells(i, c + 1) = "Q1_" & Format(n + 1, "00") n = n + 1 If Cells(i, c + 1) = z Then Exit For Next c End Sub ーー 上記は5行目に見出しをつくる例。 Q1_XXの最後(最右列)を取得 SIDのあとの数字文字部分を取得 A列から1列飛ばしでその数字に+1し、文字列として SIDに結合 Q1_のあとの部分は各列で+1していく。 結果 第1行目 SID00 Q1_01 Q1_02 Q1_03 Q1_04 第1行目の次に見出しを入れる行 本件第5行目 SID00 Q1_01 SID01 Q1_02 SID02 Q1_03 SID03 Q1_04 ーー 見出しを入れる行の割り出し方は、質問がごたごたして わかりにくく、略。 ーーー こういうルール性(どういう規則性か)を見抜くことが、 それをどうコード化するか(普通は繰り返し処理に持ち込む) 勉強には肝心だ。
お礼
imogashi様 質問が分かりづらくてすみません。 そんななか、ご回答をいただいてありがとうございます。 質問のしかたやコードの記述、ロジックなど色々と勉強になり、大変感謝しております。
お礼
お礼が遅くなり失礼をいたしました、申し訳ございません。 やりたいことができました!大変感謝しております。 わかりやすいご回答いただきありがとうございました。