- ベストアンサー
Excel 複数行のデータを1行にするVBA
- ExcelのSheet1に存在するA列~T列までの不規則なデータを1行にまとめる方法をVBAで試みましたが、上手くいきません。特に1行にするマクロが途中で止まります。データが多すぎるため、良い方法がないかと試行しています。プロフェッショナルな方に手助けをお願いしたいです。
- ExcelのSheet1に存在するA列~T列までの不規則なデータを1行にまとめる方法をVBAで試みましたが、特に1行にするマクロが途中で止まります。データが多すぎるため、良い方法がないかと試行しています。プロフェッショナルな方に手助けをお願いしたいです。
- ExcelのSheet1に存在するA列~T列までのデータを1行にまとめる方法をVBAで試みましたが、上手くいきません。特に1行にするマクロが途中で止まります。データが多すぎるため、良い方法がないかと試行しています。プロフェッショナルな方に手助けをお願いしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーになるのはANo.1の方も指摘されているように列の最大数に引っかかっているからでしょう。 最終的に1列にまとめたいのなら、素直にループを2つ回して処理をした方がシンプルですよ。 Sub sample() Dim ss As Worksheet Dim ds As Worksheet Dim nRow, nCol, nCount Set ss = Sheets("sheet1") Set ds = Sheets("sheet2") ds.Cells.Clear For nRow = 1 To 1000 For nCol = 1 To 20 If ss.Cells(nRow, nCol).Value <> "" Then nCount = nCount + 1 ds.Cells(nCount, 1) = ss.Cells(nRow, nCol) End If Next nCol Next nRow End Sub
その他の回答 (1)
- utun01
- ベストアンサー率40% (110/270)
こういうことでしょうか? とりあえず一行に纏める所だけ作ってみました。 Public Sub cptest() Dim sht1 As Worksheet Dim sht2 As Worksheet Dim targetRng As Range Dim rng As Range Dim colcount As Long Set sht1 = ThisWorkbook.Worksheets("Sheet1") Set sht2 = ThisWorkbook.Worksheets("Sheet2") Set targetRng = sht2.Range("A1") colcount = 0 For Each rng In sht1.UsedRange targetRng.Offset(0, colcount).Value = rng.Value colcount = colcount + 1 Next End Sub ちなみにですが、Excel2003までは列が255までしか無いので500列入力することはできません。 また、Excel2007以降でも16384列が最大なので、それ以上の要素数がある場合できません。
お礼
ありがとうございます Excel 2003です 原因が分かり よかったです 助かりました
お礼
なるほど さすが素晴らしいです 直接 1行に 思いつきませんでした 助かりました ありがとうございます