Excelで、A列、B列の値を新しいシートに3行ごとにどんどん貼り付ける。
という事をしたいのですが、VBAを始めたばかりなので上手く書くことが出来ません。
例)
A列 B列
101 りんご
102 ぶどう
103 オレンジ
104 桃
105 バナナ
・
・
・
これを別のシートに
A列 B列
101 りんご
(2行あける)
102 ぶどう
(2行あける)
103 オレンジ
(2行あける)
104 桃
(2行あける)
105 バナナ
・
・
・
と表示したいのです。
現在は下記のようなリンクで表示していますが、
件数が少ない時は4件から多い時は800件と幅があります。
出来れば表の一番下(空欄になる部分)まで繰り返し処理をしたいと思っています。
セルの中身が表示されるならリンクでもコピーでも構いません。
現在のマクロ
Sub Macro2()
Worksheets("Sheet2").Select
Range("C11").Value="=Sheet1!A2"
Range("C14").Value="=Sheet1!A3"
Range("C17").Value="=Sheet1!A4"
Range("C20").Value="=Sheet1!A5"
Range("C23").Value="=Sheet1!A6"
Range("H11").Value="=Sheet1!B!"
Range("H14").Value="=Sheet1!B2"
Range("H17").Value="=Sheet1!B3"
Range("H20").Value="=Sheet1!B4"
Range("H23").Value="=Sheet1!B5"
End sub
45行分まで書いたところで途方に暮れております。
よろしくお願いいたします。
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
この回答への補足
お返事が遅くなって申し訳ありません。
自宅のパソコンが壊れてお返事できずにおりました……
無事変更も出来て希望通りにループされることができました。
本当にありがとうございます。
おっしゃる通り希望はループです……
何せ本当に始めたばかりなのであちこちのサイトにある
例文のループを改変出来ずにおりました。
ありがとうございます。早速明日試してみます。
結果はまたご報告させていただきますね。
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))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
VBAでセルをクリックする回...
-
【Excel VBA】指定行以降をクリ...
-
VBからEXCELのセルの値を取得す...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
【Excel】指定したセルの名前で...
-
Excel VBA、 別ブックの最終行...
-
VBAの計算で@が出てしまう件
-
DataGridViewのセル編集完了後...
-
Excelのプルダウンで2列分の情...
-
Excel ユーザーフォームをモー...
-
EXCELのVBA-フィルタ抽出後の...
-
VB6のDataGridコントロールが良...
-
”戻り値”が変化したときに、マ...
-
Sub 要具ライフ() ActiveSheet....
-
RC表示に変数を入れる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報