

VBAのForを使用してデータ転記をしたいのですが、
元のシートはA、B列を使用した形式となっており、行間を飛ばして反映する方法が解りません。
<元データ>
①店舗
①分類
①商品名
①日付
①金額
②店舗
②分類
②商品名
②日付
②金額
③以降同上の繰り返し
上記を店舗、分類、商品名、日付、金額の順に横並びに変更したいのが質問の趣旨になります。
金額欄を転記をしたいとした場合、下記の数式では反映されず困惑しております。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Dim i As Integer
For i = 1 To 100 Step 1 (100個データを転記)
For j = 2 To 501 Step 5 (2行目~501行目の参照データを5行ずつ飛ばして反映したい)
Cells(i +1, 5).Value = Cells(j,2) (5列目に1行空けて参照元のB列のデータを転記したい)
Next j
Next i
End sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
どのようにすれば良いのかお助け頂ければと思い書き込みました。
ご指導いただけますと幸いです。
No.4ベストアンサー
- 回答日時:
No.2・3です!
やっと理解できました。
前回までのコードはすべて無視してください。
同一シート上での操作で良いのですね?
↓のコードをシートモジュールにしてみてください。
Sub Sample4()
Dim i As Long, cnt As Long
cnt = 1
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 5
cnt = cnt + 1
With Cells(cnt, "D")
.Value = Cells(i, "A")
.Offset(, 1).Resize(, 5).Value = Application.Transpose(Cells(i, "B").Resize(5).Value)
End With
Next i
End Sub
※ 「値」の代入にしていますので、日付セルの表示形式がお望みの表示にならないかもしれません。
その場合は最後にセルの表示形式で調整してください。m(_ _)m
No.3
- 回答日時:
No.2です。
補足を拝見しました。
①・②・・・はA列のデータで
店舗・分類・・・等々はB列のデータだというコトなのですね。
そして横並びに表示する場合、A列・B列データを1セル内の表示しなければならない!
という解釈です。
元データはSheet1の2行目以降にあり、Sheet2の1行目から横並びに表示するとします。
標準モジュールにしてください。
Sub Sample2()
Dim i As Long, k As Long
Dim cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row Step 5
cnt = cnt + 1
For k = 1 To 5
wS.Cells(cnt, k) = .Cells(i + k - 1, "A") & " " & .Cells(i + k - 1, "B")
Next k
Next i
End With
End Sub
※ Sheet1のA列が数値データの場合、A・B列を連結してしまうと、日付とか金額がおかしな結果になるので
半角スペースをかましています。
(すなわち文字列になりますので、金額などは計算には使えません。)
単純にB列だけを5列に横並びにしたい場合は、もっと簡単に・・・
Sub Sample3()
Dim i As Long, cnt As Long
Dim wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row Step 5
cnt = cnt + 1
wS.Cells(cnt, "A").Resize(, 5).Value = Application.Transpose(.Cells(i, "B").Resize(5).Value)
Next i
End With
End Sub
くらいで大丈夫だと思います。m(_ _)m
No.2
- 回答日時:
こんばんは!
No.1さんがおっしゃっているように、何をどうしたいのか?
が全く分かりません。
もしかして、B列データをC2セル以降(5行)に並び替えたい!という質問でしょうか?
そうであれば、一例です。
Sub Sample1()
Dim i As Long, cnt As Long
For i = 7 To Cells(Rows.Count, "A").End(xlUp).Row Step 5
cnt = cnt + 1
Cells(2, cnt + 2).Resize(5).Value = Cells(i, "B").Resize(5).Value
Next i
End Sub
※ コードを拝見しても何をやりたいのかが見えてこないので
勝手に判断しました。
この手の質問は文章で説明するより、Before & After の形を示した方が
回答が付きやすいと思います。m(_ _)m
本当に解りづらくて申し訳ありません。
画像にてどのような状態のデータをどのようにしたいのかを貼り付けました。
ご教示いただけますと幸いです。
No.1
- 回答日時:
仕様が不明瞭なので確認しますが
あるワークシートの A 列に記載されている元データがありますが、これを B 列以降に複製したいのですか?
移動 cut & paste ではなくて複製 copy & paste?
『5列目に1行空けて参照元のB列のデータを転記したい』という質問文が無茶苦茶で、列と行を混同しているものだから、何が言いたいのか分からない。
ざっくり、こんな感じにしたいと思うんだけど。
A列 B列 C列
①店舗 ②店舗 ③店舗
①分類 ②分類 ③分類
①商品名 ②商品名 ③商品名
①日付 ②日付 ③日付
①金額 ②金額 ③金額
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
エクセルVBA 1行飛ばしで転記するループ処理
Excel(エクセル)
-
【Excel マクロ】別シートの表に1行おきにデータを貼り付けしたい
Excel(エクセル)
-
-
4
一行おきにコピーするマクロが知りたい
Excel(エクセル)
-
5
VBA 連続行データを5行ずつ隣の列に貼り付ける
Excel(エクセル)
-
6
一行おきに貼り付ける 可能でしょうか
Visual Basic(VBA)
-
7
エクセル VBA 指定の範囲内をコピー 複数行あけて貼り付けを指定範囲内で
Excel(エクセル)
-
8
範囲指定したセルを1つずつ飛ばす方法
Visual Basic(VBA)
-
9
EXCEL(VBA)で1行おきに行を選択する方法
Excel(エクセル)
-
10
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
11
マクロの「1列おきに貼り付け処理を行う方法」を知りたいです。
Excel(エクセル)
-
12
一行おきに日付をすばやく入力したいのですが。
Excel(エクセル)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
エクセルで複数列の検索をマクロで行いたい
Excel(エクセル)
-
15
Excel VBAでn行毎に行の選択
Excel(エクセル)
-
16
TODAY()で設定したセルの日付が変わったらマクロを実施させたい
Visual Basic(VBA)
-
17
1年分のデータから特定の月分のデータを抽出→表示
Excel(エクセル)
-
18
期限を超えた日付に警告のメッセージボックスを出すVBAを教えてください
その他(プログラミング・Web制作)
-
19
VBA 複数の行を高速で削除する方法
その他(プログラミング・Web制作)
-
20
エクセルVBA Unionはなぜ遅い?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】並び替えの範囲が、...
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
行一括削除を早く行う、こんな...
-
基準日以前のデータを範囲を指...
-
EXCELの関数で大なり記号を複数...
-
【Excel】数式の参照範囲を可変...
-
エクセル関数について
-
エクセル VBA 行間隔を飛ばした...
-
Excelで並び替え後にア行...
-
Excelで複数列のデータを1列に...
-
EXCEL 最終行のデータを他のセ...
-
文字列を比較し、相違するフォ...
-
VBA 複数行の検索及び抽出
-
データの整理(VBA)
-
EXCELでデータ並べ替えにの時、...
-
エクセルのCOUNTIF関数について...
-
VBA 配列で型がエラーになります。
-
マクロで行の高さを設定したい
-
【Excel VBA】指定した行の最大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
オートフィルタ後のデータから...
-
急ぎ!色のついたセルを非表示...
-
EXCELで日付を比べ3か月以内の...
-
基準日以前のデータを範囲を指...
-
エクセル VBA 行間隔を飛ばした...
-
excel / ピポッド 日数を出したい
-
プルダウンに【なし、平均、デ...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
EXCEL 最終行のデータを他のセ...
-
VBA 複数行の検索及び抽出
-
検索条件に合うセルの個数を数...
-
VBA 配列で型がエラーになります。
-
行の一番右のデータセルと同じ...
おすすめ情報
解りづらくてすみません。元データは他の機器から抽出したデータになります。
A列には抽出の際に採番されたデータ番号が入力されています。
B列には上から順に店舗、分類、商品名、日付、金額となっております。
縦長のデータ見辛いため、VBAを用いて横並びにしたいと思っております。
採番されたデータ番号は不要です。
A列 B列 C列 D列 E列
①店舗①分類①商品名①日付①金額
②店舗②分類②商品名②日付②金額
お助け頂いておりますが、文章では伝わり辛く申し訳ございません。
画像にてどのようにしたいのか表記させて頂きました。
黄色のセルが元データです。
水色のセルのように横並びにしたいと思っております。