- ベストアンサー
VBAコードを教えて下さい!!
VBA初心者です。 皆様どうぞお力をお貸し下さい(>_<) A列「都道府県」・B列「市町村」・C列「番地」と分かれた列にそれぞれ入力してあります。 それをA~C列を結合して「都道府県市町村番地」と表示させたい。 データは2行目~500行目くらいまで入っています。 最初の1行(A2~C2)だけは出来たのですが、 それ以降データの終わりまではどうすれば良いのか分かりません。 どうぞ宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
標準モジュールに Sub test01() Application.DisplayAlerts = False d = Range("a65536").End(xlUp).Row MsgBox d For i = 2 To d Cells(i, "A") = Cells(i, "A") & Cells(i, "B") & Cells(i, "C") Range(Cells(i, "A"), Cells(i, "C")).MergeCells = True Next i Application.DisplayAlerts = True End Sub
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 結合セルにする必要があるか分からないので、それは手はいれません。 #2さんの数式でする方法は、一瞬で終わるから楽です。 Sub ChainedCells() With Range("A2", Range("A65536").End(xlUp)).Offset(, 3) .FormulaLocal = "=RC[-3]&RC[-2]&RC[-1]" .Value = .Value 'A列に移動する ' .Offset(, -3).Value = .Value ' .Offset(, -2).Resize(, 3).ClearContents End With End Sub
お礼
ご回答頂きまして有難うございます!! コレは・・・私には思いもつかなかった手法(?)なので勉強させて頂きます! >結合セルにする必要があるか分からないので ホント、そうですよね・・・。 どうしてそこまで結合結合ってこだわっていたのか、 自分でもちょっと呆れます・・・(ーー;) ホントに有難うございました!!
- kuma_rider
- ベストアンサー率40% (40/100)
sheet1に目的のセルがあるとして書きます。 For i=1 to 500 sheet1.range("D"&i) = sheet1.range("A"&i) & sheet1.range("B"&i) & sheet1.range("C"&i) Next i とかいかがでしょうか?? 後は、VBAを使わず、横のセルに =A1&B1&C1 と入れて、そのまま下にコピーする。
お礼
早速のご回答有難うございます!! そっか・・・ こういうやり方もあったんですね! 私は「絶対結合しなくちゃ・・・」って変に縛られてました!(x_x;) >=A1&B1&C1 と入れて、そのまま下にコピーする。 ホントは私もコレをやりたいんですが・・・ 今回は「VBAを使って」というのが大前提なんです・・・(T_T) ホントに有難うございました!! 非常に感謝致します。
- ASIMOV
- ベストアンサー率41% (982/2351)
>最初の1行(A2~C2)だけは出来たのですが、 どんなコードですか?
補足
Sub test() Application.DisplayAlerts = False Dim mystr(2) As String Dim a As String mystr(0) = [a2].Value mystr(1) = [b2].Value mystr(2) = [c2].Value [a2] = Join([transpose(transpose(a2:c2))], "") [a2:c2].Merge Application.DisplayAlerts = True End Sub こんなんです・・・(・_・、)
お礼
ああ!出来ました!! しかもコレ、私も考えてたコードと似ているので勉強になります! (何回も失敗して作り直して、でも結局出来ませんでした・・・) VBAが好きで勉強を始めたのですが 実践というのが初めてで四苦八苦しており、本当に助かりました! 有難うございました!(´▽`*)