[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル範囲を一つのセルにまとめて繰り返し投入するvba』(ER)
マクロを作成中で、こんな感じのシートが有ります。
https://docs.google.com/spreadsheets/d/1OOhnuU0ICaoLwTnsdR0Ri0crNFa_j8uUpxiP6YXGs5E/edit?usp=sharing
行いたいことは
1− G列のテキストを上から順番に毎回60個づつ取得し、c2から下にそのまま貼り付け。
2− その後、B2からD62までの範囲のセル(つまり180セルです)の全てを上から横にくっつけて、縦にくっつけ(つまりこういう順番です b2&c2&D2&b3&C3&D3&B4…D62)として一つのセルに入れる)最後にそれをj2から下にまとめたセルを一個一個作成してテキストが切れるまで行う。
なのですが、上から順番に60個づつ取得する方法、そして2の180セルをまとめてくっつけて入れる方法がわからず困っております。
お忙しい中すみません。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
力技ですが。
要件誤解あれば指摘願います。
説明通り、G列から60セルずつC列に貼り付けた B2:D61 を相手にしています。 従い、B列の62行目から下、D列の62行目から下はいっさい参照していません。 でも、アップされたサンプルには、そこにもずらっと値が記載されているので、 ちょっと心配です。
Sub Test() Dim i As Long Dim j As Long Dim x As Long Dim y As Long Dim w(1 To 180) As Variant Dim z As Long Dim n As Long
Application.ScreenUpdating = False
Columns("J").ClearContents
z = 2
For x = 2 To Range("G" & Rows.Count).End(xlUp).Row Step 60 Range("C2:C61").Value = Cells(x, "G").Resize(60).Value n = 0 For i = 2 To 61 For j = 2 To 4 n = n + 1 w(n) = Cells(i, j).Value Next Next Cells(z, "J").Value = Join(w, "") z = z + 1 Next
End Sub
(β) 2015/10/07(水) 22:35
やっていることはまったくかわりませんが、コード記述として、領域内からセルを取り出す部分の二重ループをなくしたものです。
Sub Test2() Dim x As Long Dim w(1 To 180) As Variant Dim z As Long Dim n As Long Dim c As Range
Application.ScreenUpdating = False
Columns("J").ClearContents
z = 2
For x = 2 To Range("G" & Rows.Count).End(xlUp).Row Step 60 Range("C2:C61").Value = Cells(x, "G").Resize(60).Value n = 0 For Each c In Range("B2:D61") n = n + 1 w(n) = c.Value Next Cells(z, "J").Value = Join(w, "") z = z + 1 Next
End Sub
(β) 2015/10/08(木) 07:29
昨日お礼を投下したと思っていたのですが、反映されていなかったようですみません。こちらでできました、ありがとうございます。
61以降のデータは元々A列にRAND()でランダムにB/D列を並び替えるようのシードデータが入っていて、一回A列をキーに並び替え毎回して、今回の処理という流れだったのですが、今回できなかった部分とは直接関係がなかったので、途中で外していました。分かりづらくしてしまいすみません。
(スレ主) 2015/10/08(木) 13:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.