• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで、A列、B列の値を新しいシートに3行ごとにどんどん貼り付け)

Excel VBAでA列とB列の値を新しいシートに3行ごとに貼り付ける方法

このQ&Aのポイント
  • ExcelのVBAを使用して、A列とB列の値を新しいシートに3行ごとに貼り付ける方法について教えてください。
  • 現在、マクロを使用して一部の値をコピーして貼り付けていますが、繰り返し処理を使って全ての値を自動的に貼り付けたいです。
  • 現在のマクロでは45行分しか貼り付けていませんが、表の一番下まで繰り返し処理する方法を教えてください。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

Sheet1のデータ数を取得する方法が判らないのか、ループを回す発想が無いのか……と、言った所でしょうか。 Sheet1のA列の空欄までの行数は、↓これで求まります。 Sheets("Sheet1").Range("A1").End(xlDown).Row あとは、その行数分ループを回してSheet2に値を入れて行けば良いです。 やりたい事と、現在のマクロが一致していないので、やりたい事の方を実現するサンプルを提示します。適当に変更してください。 Sub Sample()  Dim nTotal, i  nTotal = Sheets("Sheet1").Range("A1").End(xlDown).Row 'Sheet1の最終行  With Sheets("Sheet2")   .Columns("A:B").ClearContents 'Sheet2のA、B列をクリア   For i = 1 To nTotal    .Cells(i * 3 - 2, 1).Value = Sheets("Sheet1").Cells(i, 1).Value    .Cells(i * 3 - 2, 2).Value = Sheets("Sheet1").Cells(i, 2).Value   Next i  End With End Sub

penpen0608
質問者

お礼

おっしゃる通り希望はループです…… 何せ本当に始めたばかりなのであちこちのサイトにある 例文のループを改変出来ずにおりました。 ありがとうございます。早速明日試してみます。 結果はまたご報告させていただきますね。

penpen0608
質問者

補足

お返事が遅くなって申し訳ありません。 自宅のパソコンが壊れてお返事できずにおりました…… 無事変更も出来て希望通りにループされることができました。 本当にありがとうございます。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 次の様な方法では駄目なのでしょうか。  今仮に、元のデーターが入力されているシートをSheet1、リストの最上段がシートの1行目に入力されているものとします。  まず、2行置きに表示するシートのA1セルに、次の数式を入力して下さい。 =INDEX(Sheet1!A:A,(ROWS($1:1)-1)/3+1)  次に、A1セルをコピーして、B1セルに貼り付けて下さい。  それから、A1~B1の範囲をコピーして、4行目に貼り付けて下さい。  そして、2~4行目を範囲選択してから、Excelのドラッグ機能を使用して、5行目以下の行に数式をコピーして下さい。  尚、このままではSheet1の何も入力されていないセルを参照した場合には、0と表示されてしまいますから、以下の様な方法で0が表示されない様に、シートの設定を変更して下さい。 メニューバーの[ツール]ボタンをクリック   ↓ 現れた選択肢の中にある[オプション]をクリック   ↓ 現れた「オプション」ウィンドウの[表示]タグをクリック   ↓ 「ウィンドウ オプション」欄にある「ゼロ値」のチェックを外す   ↓ [OK]ボタンをクリック  これで、0が表示されなくなります。  尚、Sheet1の何も入力されていないセルを参照する場合にのみ0を表示しない様にし、数値の0が入力されているセルを参照する場合には、0を表示させる場合は、「ゼロ値」のチェックを入れて、A1セルに入力する数式を次の様に変更して下さい。 =IF(INDEX(Sheet1!A:A,(ROWS($1:1)-1)/3+1)="","",INDEX(Sheet1!A:A,(ROWS($1:1)-1)/3+1))

penpen0608
質問者

お礼

ありがとうございます。明日早速試してみます。 またご報告させていただきますね。