[[20151007162354]] 『セル範囲を一つのセルにまとめて繰り返し投入する』(ER) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル範囲を一つのセルにまとめて繰り返し投入する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.