• ベストアンサー

いずれかの条件を含むデータを全て抽出したい

HohoPapaの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

VBAを持ち込んでいいのであれば、 (SQL文も使うので若干ハードルが上がりますが) 後記コードはいかがでしょうか? "ここに貼り付ける"というシートから "Sheet2"、"Sheet3"というシートに出力しています。 抽出条件は、SQL文を見てもらえばおおよそ推測できると思います。 また、列名の末尾に「.(ドット)」が使われているので 出力先列名で文字化けが起きるかもしれません。 その場合は指摘してください。 コードを修正します。 よかったら挑戦してみてください。 Option Explicit Sub sample()  Dim SQL As String  Dim cn As Object  Dim rs As Object  Dim i As Long  'Sheet2に抽出==============    'SQL全文を組み立て  SQL = ""  SQL = SQL & "SELECT *" & vbCrLf  SQL = SQL & "FROM [" & "ここに貼り付ける" & "$A1:Z50000]" & vbCrLf  SQL = SQL & "WHERE (([商品名] LIKE '%標準%') or " & vbCrLf  SQL = SQL & " ([商品名] LIKE '%キャリブ%')) " & vbCrLf  'SQLを実行  Set cn = CreateObject("ADODB.Connection")  Set rs = CreateObject("ADODB.Recordset")  cn.Provider = "Microsoft.ACE.OLEDB.12.0"  cn.Properties("Extended Properties") = "Excel 12.0;HDR=Yes;IMEX=1"  cn.Open ThisWorkbook.Path & "\" & ThisWorkbook.Name  rs.Open SQL, cn  '結果セットを出力  With ThisWorkbook.Sheets("Sheet2")  '出力先シートの指定   .Cells.ClearContents '出力先クリアー   For i = 0 To (rs.Fields.Count - 1) '列名を出力    .Cells(1, i + 1).Value = rs.Fields(i).Name   Next   .Cells(2, 1).CopyFromRecordset rs  End With  '後処理  rs.Close  Set rs = Nothing  cn.Close  Set cn = Nothing  'Sheet3に抽出==============    'SQL全文を組み立て  SQL = ""  SQL = SQL & "SELECT *" & vbCrLf  SQL = SQL & "FROM [" & "ここに貼り付ける" & "$A1:Z50000]" & vbCrLf  SQL = SQL & "WHERE (([商品名] LIKE '%染色%') or " & vbCrLf  SQL = SQL & " ([商品名] LIKE '%マルチ%')) and " & vbCrLf  SQL = SQL & " ([在庫部署] = '血液検査') " & vbCrLf  'SQLを実行  Set cn = CreateObject("ADODB.Connection")  Set rs = CreateObject("ADODB.Recordset")  cn.Provider = "Microsoft.ACE.OLEDB.12.0"  cn.Properties("Extended Properties") = "Excel 12.0;HDR=Yes;IMEX=1"  cn.Open ThisWorkbook.Path & "\" & ThisWorkbook.Name  rs.Open SQL, cn  '結果セットを出力  With ThisWorkbook.Sheets("Sheet3") '出力先シートの指定   .Cells.ClearContents '出力先クリアー   For i = 0 To (rs.Fields.Count - 1) '列名を出力    .Cells(1, i + 1).Value = rs.Fields(i).Name   Next   .Cells(2, 1).CopyFromRecordset rs  End With  '後処理  rs.Close  Set rs = Nothing  cn.Close  Set cn = Nothing End Sub

momo1414rrr
質問者

補足

回答ありがとうございます! 最初はマクロで作成していたのですが、途中うまくいかず関数でも作成していました。 マクロ使用可ですので挑戦してみます。ありがとうございます!^ ^

関連するQ&A

  • エクセル 複数条件抽出について

    エクセル2013を使用しています。 データシートより複数条件に当てはまるデータを 別のシートへ必要な項目のみ抽出する方法(関数orマクロ)をお教え下さい。 データシート:A列からU列まで様々なデータが入力されている。 抽出条件:H列とN列 抽出する項目:C列・I列・M列・O列・Q列・R列・S列 (抽出する項目は増える可能性有) 複数条件の抽出はフィルタオプションで出来たのですが、 抽出が必要な項目を指定する方法が分かりませんでした。 宜しくお願いします。

  • Excelでの複数データ抽出方法

    Excelで関数を使用して以下のようなデータから 複数のデータ抽出を行いたいのですが可能でしょうか? <sheet1> A列 B列 C列 D列     E列 123456 11 12 13    13 123457 12 13 14    13、14 123158 13 14 15    13,14 123159 14 15 16    14  123160 15 16 17 ※抽出するデータは「13・14」になり、抽出場所は別シートでもかまいません。 過去の質問など参照してみましたがうまく出来ませんでした。 複数の関数を組み合わせでもかまいませんので、お手数おかけしますが よい方法が有ればご教示お願いします。

  • エクセルデータ抽出方法を教えてください

    エクセルでのデーター抽出方法を教えてください、シート1:A1にUA1と入力し、シート2:A列にはUA1・・・・複数のデータが縦に並んでいます、シート1:A1に入力したデーターを元にシート2:A列を検索し該当するデータの抽出を行いたいです、VLOOKUPではうまく行きません教えてください

  • 条件に合った値を抜き出すには

    例えば、A列に縦に並んだデータのシートが数十枚あります。 その各シートのデータの先頭の値と、 指定する値(複数あります)に当てはまったデータだけを新しいシートに抜き出す方法はありますでしょうか? A列に縦に続くデータ 0 1 2 3 4 5 ・ ・ ・ 上記データのより <複数の条件を指定する〉 0123           ○→全て該当するので抜き出す 012345         ○→全て該当するので抜き出す 123456         ×→全て該当しないので抜き出さない (全て文字列モードで表示できる方法があれば嬉しいです)

  • <EXCEL>条件に合うデータを抽出する関数

    EXCELで、条件に合うデータを抽出し個数を表示させたいと思っています。 ただしSUMPRODUCTなどの『複数条件の設定』ではなく、『特定の文字列を除く』 という形で設定したいのですが、そのような関数はありますか?

  • Excelで複数条件を満たすデータを抽出

    以下のような場合の、データ抽出方法を教えてください。 Sheet1 "計画”, Sheet2 "実績”があります。 それぞれのSheetの A~Dには、共通列項目である ”都道府県””都道府県コード””品目””品番” が設定されています。 このふたつのSheetをまとめて、項目順に”計画”データの下に”実績”データがくるようなSheetを作りたいのですが、上記4つの条件が全て共通なデータを、関数等と使って抜出すことはできるのでしょうか? If、VLOOKUP、And、”名前をつける”などを組み合わせて、いろいろ考えてみたのですが、複数条件を満たす結果の抽出ができませんでした。 宜しくお願いします。

  • エクセル データ抽出について

    (データ)    A B C 1  I あ 20 2  II い 30  3  III う 10 4  IV あ 10 5  V い 20  6  VI う 30 したい事(1) A列のうちいずれかの項目を入力すると、B列の該当値を抽出 したい事(2) (1)のB列該当値が検索一行目で抽出されたら、その値からC列の値を抽出したい 困っていること・・・B列に全く同じ名前の項目があるため、抽出すると 先に来る値が飛んできてしまう 例:IVを入れると「あ」が自動で抽出され、その「あ」でさらに「10」を抽出したいのに、先にあるC1の「20」が飛んできてしまう。 それぞれ、(1)(2)にどのような関数を入れると、抽出したい値が出てくるでしょうか?

  • EXCELでデータを抽出してコピペしたいです

    指定した日付より、それ以前の誕生日(指定日も含む)の人だけを抽出してコピペしたいのですが WORKBOOK1のSHEET1(名簿)のH列に生年月日(他の列にもデータあります) データは、1200件(行)あります。 WORKBOOK2のSHEET1(該当者)名簿と配列は同じです。 A1に指定の日付をいれます。 WORKBOOK1のSHEET1(名簿)より抽出したデータのペースト位置は、A3からです。 VBAで可能でしょうか?

  • 指定条件に合うデータを関数で抽出したい

    Excelの表のデータで指定の条件に合ったデータだけを、関数を使って抽出したいです。            条件:C列="〇" A列 B列 C列   (抽出結果) 東京 10  〇    東京 10 〇 大阪 20  〇    大阪 20 〇 大阪 25  × 関数としては、ROW、ROWS、COLUMNS関数は理由があって使えません。ROWなどで設定する値は手打ちでも構いませんので、教えていただけると助かります。 どうぞよろしくお願いいたします。

  • excelで条件に一致するデータ全てを抽出する方法

    現在、エクセル2003を使用しています。 A列・B列・C列にデータが入力されています。 ただし、空白セル(空白行)もあります。 A列に“@Name”とデータ入力がある場合 同じ行のC列の値を抽出したいと思います。 A列に@Nameは複数ありますが、C列の値は それぞれ違いますので、データの集計先はF列に 全て抽出をしたい。 なにか良い方法(VBAや関数)がありましたら 教えてください。