Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10137 / 13646 ツリー ←次へ | 前へ→

【23503】条件判断・コピー・貼り付け VBA初心者 05/3/24(木) 21:12 質問[未読]
【23504】Re:条件判断・コピー・貼り付け ichinose 05/3/24(木) 23:02 発言[未読]
【23505】Re:条件判断・コピー・貼り付け VBA初心者 05/3/24(木) 23:20 お礼[未読]

【23503】条件判断・コピー・貼り付け
質問  VBA初心者  - 05/3/24(木) 21:12 -

引用なし
パスワード
   初歩的な質問かもしれませんが

  A    B   C    D
3月1日  なす  リンゴ  みかん
3月2日  バナナ メロン  イチゴ
3月3日  なし  きゅうり ごぼう
3月1日  いも  パイン  もも

A列を条件判断に使い、条件に一致した場合
B列からD列をコピーして別のシートに貼り付けたい
のですが、offset,range等色々組み合わせてみたのですが
うまくいきません。
例)3月1日を検索条件として、一致した場合
   なす リンゴ みかん 
  を別のシートにコピー・貼り付け
  それを一行ずつ下がって繰り返し続けていく
  次に出てきた
   いも パイン もも
  を前のものの下にコピー・貼り付け

何かいい方法があれば教えください。お願いします。

【23504】Re:条件判断・コピー・貼り付け
発言  ichinose  - 05/3/24(木) 23:02 -

引用なし
パスワード
   ▼VBA初心者 さん:
こんばんは。

>初歩的な質問かもしれませんが
>
>  A    B   C    D
>3月1日  なす  リンゴ  みかん
>3月2日  バナナ メロン  イチゴ
>3月3日  なし  きゅうり ごぼう
>3月1日  いも  パイン  もも
>
>A列を条件判断に使い、条件に一致した場合
>B列からD列をコピーして別のシートに貼り付けたい
>のですが、offset,range等色々組み合わせてみたのですが
>うまくいきません。
次回からは、実際にどのようなコードを作られたのかを記述してくださいね!!
動かなかったコードでもいいんですよ。そのコードを掲載する事によって、
この投稿を見ている方にとってそれぞれの価値観で参考になりますから・・・。
勿論、私にとっても・・・。

で、上記のサンプルデータですが、1行目に項目名(見出し)を入れるようにしませんか?
例えば、

日付    項目1  項目2  項目3
3月1日  なす  リンゴ  みかん
3月2日  バナナ メロン  イチゴ
3月3日  なし  きゅうり ごぼう
3月1日  いも  パイン  もも

このようにしておくと、フィルタが使えます。

1行目に項目名がなくても解決する方法はありますが、
入れといた方がExcelを使用する上では便利ですから・・。
まっ、実際には入っているのかもしれませんが。

上のサンプルデータから見ると、セルA2からA3、A4、・・とひとつひとつ
見ていっても良いのですが、フィルタを使いました。

新規ブックの標準モジュールに以下のコードをコピーして実行してみて下さい。

'=================================================================
Sub Macro1()
  Worksheets(1).Activate
  Call sample_sheet
  Range("i2").Value = "3月1日"
  MsgBox "表示されているデータから抽出します OK?"
  Range("A1:D5").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets(2).Range("a1"), CriteriaRange:=Range _
    ("I1:I2"), Unique:=False
End Sub
'=========================================================================
Sub sample_sheet()
  With Range("a1:a5")
   .Cells(1).Resize(, 4).Value = Array("日付", "項目1", "項目2", "項目3")
   .Cells(2).Resize(, 4).Value = Array("3月1日", "なす", "りんご", "みかん")
   .Cells(3).Resize(, 4).Value = Array("3月2日", "バナナ", "メロン", "イチゴ")
   .Cells(4).Resize(, 4).Value = Array("3月3日", "なし", "きゅうり", "ごぼう")
   .Cells(5).Resize(, 4).Value = Array("3月1日", "いも", "パイン", "もも")
   End With
  Range("i1").Value = "日付"
End Sub

サンプルデータもコードで作成するようにしてあります。
上記のコードは、

最左端シートにサンプルデータ(A1〜D5)
抽出条件を同シートの(I1〜I2)
抽出したデータのコピー先として左から2番目のワークシートのセルA1

という仕様で抽出しています。
手動操作のフィルタオプションの応用です。

確認してみて下さい。

【23505】Re:条件判断・コピー・貼り付け
お礼  VBA初心者  - 05/3/24(木) 23:20 -

引用なし
パスワード
   ichinose さんへ

こんばんわ。早速ご回答いただきありがとうございました。
実行したところ、イメージした通りでしたので非常に助かりました。
今度から投稿する際には気をつけるようにしますm(__)m
VBAは奥が深いので、色々と勉強していきたいと思います。

ありがとうございました!!

10137 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free