• ベストアンサー

エクセルVBAを使って複数セルをひとつのセルにまとめたいのですが。

以前投稿されていたもので、やってみたのですが、うまくいかなかったので質問いたします。 E3~E42までのセルの情報をB3へまとめたいのです。 また、E3~E42のうちなにも書かれていないセルは、まとめないようにしたいです。空白になっているセルは、最後に記載されているセル以降空白になる状況となります。 今後の運用面を考え、この手法をとりたいのですが、よい方法はありますでしょうか。   A列 B列 ・・・ E列 3    111      111      222      333      444 4           222 5           333 6           444 7 8 9 質問の説明が足りないようでしたら、ご指摘ください。 よろしくお願いします。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

>以前投稿されていたもので、やってみたのですが、うまくいかなかったので質問いたします。 その上手くいかなかったコードをアップして、それを修正加筆した方が勉強になると思うのですが、、、 ま、それは置いといて、一例。。。 '---------------------------------------  Sub test()  Dim R As Long  Dim S As String  If Cells(Rows.Count, "E").End(xlUp).Row < 3 Then Exit Sub  For R = 3 To Cells(Rows.Count, "E").End(xlUp).Row    If Cells(R, "E").Value <> "" Then      S = S & Cells(R, "E").Value & vbLf    End If  Next R  With Range("B3")    .Value = Left(S, Len(S) - 1)    .WrapText = True    .EntireRow.AutoFit  End With End Sub '-------------------------------------------- 以上です。  

norida_man
質問者

お礼

ありがとうございました。 勉強してみて、分からないところは質問して力をつけて行きたいと思います。 ご指摘ありがとうございました。

norida_man
質問者

補足

ありがとうございます。 無事出来ました。 出来なかった理由としては、よく分からないままエクセルの 関数方式で流用しようとしていたのです。 完全に、勉強不足です。すみません。

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

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>E3~E42までのセルの情報をB3へまとめたいのです。 改行でまとめるのなら Range("B3").Value = Join(.Index(.Transpose(v), 1, 0)) ↓ Range("B3").Value = Join(.Index(.Transpose(v), 1, 0), vbLf)

norida_man
質問者

お礼

ありがとうございます。 無事出来ました。 いろいろと方法があって勉強になります。

すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>空白になっているセルは、最後に記載されているセル以降空白になる状況となります。 つまり「なにも書かれていないセル」はE3~E42間の最終行 以降ですね Sub Test()   Dim v As Variant   v = Range("E3", Range("E43").End(xlUp)).Value   With Application     Range("B3").Value = Join(.Index(.Transpose(v), 1, 0))   End With End Sub

norida_man
質問者

補足

回答いただきありがとうございます。 こちらの例だと、改行されていないので、myRangeさんからいただいた回答が私のやりたかった方法となります。

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

関連するQ&A