[[20190802095609]] 『条件にあった行を抽出する』(マサまさ) ページの最後に飛ぶ

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

 

『条件にあった行を抽出する』(マサまさ)

 いつもお世話になっております。
 下記のような感じで抽出できるようにVBAでできますでしょうか?

 Sheet1
    A    B    C        D
    ID   名前  コード(数字)  薬名
   11111  あああ  6         eee
   11112  いいい  7         bbb
     11113  ううう  8         nnn
   11110  えええ  6         eee
   11114  おおお  70         xxx
   11111  あああ  15         yyy
     11111  あああ  13         ooo
   11115  かかか  443        vvv

 上記のようにデータが約500行ぐらいあります。
 条件は、C列の特定のコード(数字)を含む行(andではなくor)
 をすべてSheet2へ抽出
 特定のコードは、6 8 9 10 11 70 71 81 443 ・・・全部で約40ぐらいです。
 今後コードが増減する予定があります。(コード桁数は1〜3桁)

 Sheet2
    A    B    C        D
    ID   名前  コード(数字)  薬名
   11111  あああ  6         eee
    11113  ううう  8         nnn
     11110  えええ  6         eee
   11114  おおお  70         xxx
   11115  かかか  443        vvv

 よろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 1.Sheet2のA列に 特定のコードを上詰めで書き込む

 2.下記Macro1を実行する。

 結果は、こんな風になっちゃいますが、大勢に影響はないでしょう。

 <Sheet2 結果図>
  行  ___A___  _B_  __C__  ___D___  ___E___  __F__
   1  コード        ID     名前     コード   薬名 
   2       6        11111  あああ        6   eee  
   3       8        11113  ううう        8   nnn  
   4       9        11110  えええ        6   eee  
   5      10        11114  おおお       70   xxx  
   6      11        11115  かかか      443   vvv  
   7      70                                      
   8      71                                      
   9      81                                      
  10     443                                      

 標準モジュールに貼り付けるマクロ
 ↓
 Sub Macro1()
     With Sheets("Sheet2")
         Intersect(.UsedRange, .Columns("C:F")).ClearContents
         Sheets("Sheet1").Columns("A:D").AdvancedFilter Action:=xlFilterCopy, _
         CriteriaRange:=.Range("A1", .Cells(.Rows.Count, "A").End(xlUp)), CopyToRange:=.Range("C1"), Unique:=False
     End With
 End Sub

(半平太) 2019/08/02(金) 12:29


半平太 様

コメントありがとうございます。
早速実行してみましたが・・・・

1.Sheet2のA列に 特定のコードを上詰めで書き込む
→A列に6、8、9、10,11、70・・・・と入力しマクロ実行しましたが・・・

Sheet1のすべてがSheet2に抽出されA列に列挙したコードは無視されています。

教えていただいたように作成しましたが上手く行きません。
今一度お願いできますでしょうか?

(マサまさ) 2019/08/02(金) 16:03


半平太 様

すみません補足です。
1.Sheet2のA列に 特定のコードを上詰めで書き込む
→上詰めは何か意味がありますか?
 セル一つにコード1つづつ入力でよかったでしょうか?

よろしくお願いいたします。
(マサまさ) 2019/08/02(金) 16:06


 >1.Sheet2のA列に 特定のコードを上詰めで書き込む 
 >→上詰めは何か意味がありますか?

 図示した通りです。

 1.一行目にタイトル、つまり「コード」。(Sheet1のC列のタイトルと完全に一致する文字)

 2.二行目以下の各セルに特定コード。中間に空白セルを入れない。

(半平太) 2019/08/02(金) 16:16


簡単にやるなら・・・

・Sheet2のA列に抽出するコードを書いておくのは、半平太さんとおなじ、
・Sheet1のE列に MATCH関数でも、VLOOKUP関数でもいいので、抽出対象かどうか判断できる値を表示
・Sheet1のE列でフィルターして、抽出対象のみを別シートにコピペ(E列は不要です)

ではどうでしょう?

(渡辺ひかる) 2019/08/03(土) 13:34


半平太 様

コメントありがとうございます。

 1.一行目にタイトル、つまり「コード」。(Sheet1のC列のタイトルと完全に一致する文字)
→これが間違ってました。

希望通りにできました。本当にありがとうございました。

今後ともよろしくお願いします。

渡辺ひかり様 助言ありがとうございました。
今後ともよろしくお願いいたします。
(マサまさ) 2019/08/05(月) 10:57


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.