• ベストアンサー

エクセルでの該当する条件に一致する値の抽出

エクセル初心者で困っています。 どなたかお助け下さい。 以下の様な表があります。 A   B  C  D   E  F   G 1商品名 入荷数 消費1 消費2 性能1 性能2 性能3 2○○  2   1   2   △△  ◆◆  □□   3××  2   1   2   □□  △△  ◆◆ 4○○  2   1   2   ●●  □□  ◎◎ この表を基に、別シートを以下の様に作成して A   B  C  D   E  F   G 1性能 【◆◆】 2 3商品名 入荷数 消費1 消費2 性能1 性能2 性能3 4○○  2   1   2   △△  ◆◆  □□   5××  2   1   2   □□  △△  ◆◆ セルB1に性能名を入力して、入力した値と 基となるシートのEFGの列から一致する値があった場合 該当する行をそのまま表示するような式を作りたいのですが可能でしょうか? 分かりづらい質問で申し訳ありませんが ご回答いただけるとありがたいです。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

Googleででも「imogasi方式」で照会すれば私の回答した質問に関連した、関数による抜き出し問題が出ています。関数しか知らない人は何でも関数でやらざるを得ないケースが多い。 そこには他の方の回答も載ってますが、初心者には理解できない関数式の組み合わせの方法や配列数式というのも在ります。概して関数による抜き出しは難しく。抜き出し先のシートは全セルが関数で埋まり、処理が重たくなるわけです。 ーー 「imogasi方式」は作業列(下記の場合H列)を使います。それだけにやや判りやすいと思う。 Sheet1の各行で性能1-性能Xまでの列に◆◆があれば(COUNTIF関数利用)、上の行から連番を振って行きます。 例データ 商品名 入荷数 消費1 消費2 性能1 性能2 性能3 連番 ○○ 2 1 2 △△ ◆◆ □□ 1 ×× 2 1 2 □□ △△ ◆◆ 2 ○○ 2 1 2 ●● □□ ◎◎ aa 2 1 2 ◆◆ xx ss 3 bb 2 1 2 zz dd tt cc 2 1 2 uu yy ◆◆ 4 SHEET2のA1に◆◆ ーーー Sheet1の H2の式は =IF(COUNTIF(E2:G2,Sheet2!$A$1)>0,MAX($H$1:H1)+1,"") 下方向に式を複写する。 これで連番が振られる。 Sheet2は A3に =INDEX(Sheet1!$A$1:$G$7,MATCH(ROW()-2,Sheet1!$H$1:$H$7,0),COLUMN()) 横方向にG列まで式を複写。 A3:G3の式をA6:G6まで式を複写。 結果 ◆◆ 商品名 入荷数 消費1 消費2 性能1 性能2 性能3 ○○ 2 1 2 △△ ◆◆ □□ ×× 2 1 2 □□ △△ ◆◆ aa 2 1 2 ◆◆ xx ss cc 2 1 2 uu yy ◆◆ ーーー 本来はVBAで処理するなどに適した課題だと思う。 ==== 操作でフィルタオプションの設定などを勉強するのが、エクセルの 予期する方法と思う。

kumakuma1
質問者

お礼

はい。。。 色々と過去の質問・回答なども拝見させていただいたのですが いかんせん初心者なもので難解でした^^; 分かりやすい解説に今後の勉強までご教示いただき有難うございます。 VBAなども視野に入れてスキルアップを図っていきたいと思います。 有難うございました!

その他の回答 (4)

  • 135ok
  • ベストアンサー率34% (26/75)
回答No.4

No.1です。一部訂正します。 一例です。 添付資料を参照ください。 作業列を入れて No. 判定 商品名 入荷数 消費1 消費2 性能1 性能2 性能3 A2 =IF(B2="","",COUNTIF($B$2:B2,B2)) B2 =IF(Sheet2!$B$1="","",IF(COUNTIF(G2:I2,Sheet2!$B$1),"○","")) B、Aの順番で説明します。 B2は、Sheet2!$B$1が空欄の時は空欄、以外は、文字が含まれている場合は○を、無い場合は空欄を表示。 A2は、B2が空欄の時は空欄、以外は、B列に○が何個あるか表示。 (表示方法は、上から1、2) sheet2 A列に作業列を作成し、番号をつける。 B4 =IF(ISNA(VLOOKUP($A4,Sheet1!$A$1:$I$4,COLUMN(A4)+2,0)),"",VLOOKUP($A4,Sheet1!$A$1:$I$4,COLUMN(A4)+2,0))    *A列の文字がsheet1に無い時は空欄、以外は、番号にあった値をsheet1から表示。

kumakuma1
質問者

お礼

数式に対する補足までいただき有難うございます。 今後は自分でも色々と勉強してスキルアップしたいと思います。 有難うございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート1に元のデータがあるとしてH2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(Sheet2!B$1="","",IF(COUNTIF(E2:G2,Sheet2!B$1)=0,"",MAX(H$1:H1)+1)) シート1のA1セルからG1セルをコピーしてシート2のA3セルに貼り付けます。 シート2のA4セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(A$3="",COUNTIF(Sheet1!$H:$H,ROW(A2))=0),"",INDEX(Sheet1!$A:$G,MATCH(ROW(A1),Sheet1!$H:$H,0),COLUMN(A1)))

kumakuma1
質問者

お礼

有難うございます。 参考にさせていただきます。 大変助かりました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像のような感じで良いのでしょうかね? もしそうであれば、 Sheet1のA列を作業用の列とさせてもらっています。 Sheet1のA2セルに =IF(Sheet2!$B$1="","",IF(COUNTIF(B2:H2,Sheet2!$B$1),ROW(A1),"")) という数式を入れて、オートフィルで下へコピーします。 (Sheet2の数式が1000行まで対応できるようにしていますので、 1000行くらいまでコピーしても構いません) そして、Sheet2のA4セルに =IF(COUNT(Sheet1!$A$2:$A$1000)>=ROW(A1),INDEX(Sheet1!$B$2:$H$1000,SMALL(Sheet1!$A$2:$A$1000,ROW(A1)),COLUMN(A1)),"") という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

kumakuma1
質問者

お礼

分かりやすいように添付ファイルまで付けていただき 有難うございます。 今後は自分でも色々と勉強してスキルアップしたいと思います。 大変助かりました。 有難うございました。

  • 135ok
  • ベストアンサー率34% (26/75)
回答No.1

一例です。 添付資料を参照ください。 作業列を入れて No. 判定 検索 商品名 入荷数 消費1 消費2 性能1 性能2 性能3 A2 =IF(B2="","",COUNTIF($B$2:B2,B2)) B2 =IF(Sheet2!$B$1="","",IF(ISNUMBER(FIND(Sheet2!$B$1,$C2)),"○","")) C2 =H2&I2&J2 C、B、Aの順番で説明します。 C2は、性能1~3の文字を足して検索対象としています。 B2は、Sheet2!$B$1が空欄の時は空欄、以外は、文字が含まれている場合は○を、無い場合は空欄を表示。 A2は、B2が空欄の時は空欄、以外は、B列に○が何個あるか表示。 (表示方法は、上から1、2) sheet2 A列に作業列を作成し、番号をつける。 B4 =IF(ISNA(VLOOKUP($A4,Sheet1!$A$1:$J$4,COLUMN(A4)+3,0)),"",VLOOKUP($A4,Sheet1!$A$1:$J$4,COLUMN(A4)+3,0))    *A列の文字がsheet1に無い時は空欄、以外は、番号にあった値をsheet1から表示。

この投稿のマルチメディアは削除されているためご覧いただけません。

関連するQ&A

  • excel 複数条件の値を返す Vlook条件2つ以上の場合

    質問集を探しましたが、該当するものを探すことが出来なかったので、質問させてください。 エクセルデータで以下のような基データ表があるとします。 【表1】 A          B          C           D           E 商品NO    商品名    店舗名    売上数    売上額  123        ガム       東京        10        100 123        ガム       大阪        20        200 345        チョコ      東京        40        200 345        チョコ      大阪        30        150 345        チョコ      北海道       10        50 678        アメ       東京         20        80 678        アメ       北海道        10        40 ↓↓のように値を求めたい。 【表2】 A          B          C           D           E           F  商品NO    商品名     店舗名→    東京      大阪     北海道 123        ガム        売上数      10         20        N/A                    売上額      100        200        N/A 345        チョコ        売上数      40         30        10                    売上額      200        150        50 678        アメ         売上数      20         N/A        10                    売上額      80        N/A        40 表1を表2のように少々形を変え、引っ張ってきたいのです。 商品NO(or商品名)と店舗名と売上数(or売上額)の3つの条件が あるものを引っ張っていくにはどうすればいいのか。 表2のD2~F7に置く関数を教えてください。 出来れば、作業列など作らずにひとつの式で片付けたいのですが、 教えていただけますでしょうか。

  • 条件1つで複数の値を抽出することはできませんか。

    エクセルのことなのですが、条件1つで複数の値を抽出してきたいと思っています。 しかし、様々な本やインターネットのサイトを参照したのですがうまくできません。 内容なのですが、「シート1」というシートがありこのシートを「シート2」のように番号で分けて、横に並べるようなシートを作りたいと思っています。 シート1 番号 品目 100 A 100 B 101 C 101 D 101 E 101 F 101 G 101 H 101 I 102 J 103 K 103 L シート2 番号 品目 100 A B 101 C D E F G H I 102 J 103 K L すみませんが教えていただけないでしょうか。 よろしくお願いします。

  • エクセルで、2つの条件に一致する値を返す方法 教えてください

    A B C D E F 1 日付 分数 2 Aさん Bさん Cさん Aさん Bさん Cさん 3 3/2 2/12 3/15 9 10 10 4 3/4 2/12 3/15 2 3 3 5 3/4 2/12 3/15 30 30 30 6 3/3 2/12 3/15 1 1 2 7 3/4 2/12 3/15 3 5 4 8 3/4 2/12 3/15 29 29 29 上記の表より 列A,B,Cは日付 列D,E,Fは分数です ・3行目のG列にD3:F3の範囲で最小値であり、A3:C3の範囲で最新の日付(最大値)である時の 日付を表示したい。 G3のセルを下に引っ張り各行ごとに値を表示したいです。 関数(式)を教えてください。

  • EXCELで2つ条件で1つが部分一致のとき

    Excelの2003バージョンです。 現在使用しているファイル名「会社」シート名「支社」のセルE12に 同じシート上のD12(同じ行ですね)と ファイル名「埼玉」シート名「データ」のA列の中の値と一致(完全一致)して なおかつ、シート名「支社」のF3の値(例・後1、後2)とシート名「データ」の C列の値(例・後1 第23号)と部分一致をした時に 使用中シート「支社」のE12に●、していない時は空白にしたいのです。 ファイル「会社」シート名「支社」 行数 --A列----B列----C列-----D列----E列----F列---- 1                             11223344  (ここに関数)  後1 ファイル「埼玉」シート名「データ」 行数 --A列----B列----C列-----D列----E列----F列---- 10   11223344         後1 第23号  11   11223344         一般会社 第44号  のような場合はE1に●になるようにしたいのです。 それ以外は空白で。 あまり詳しくないので、よろしくお願いします。

  • Excel 条件に一致する日付の求め方について

    こんにちは!初めて質問します。 Excel関数の使い方がわからずに困っています。 売上と在庫管理をそれぞれ別シートに入力しています。 売上が出た場合、在庫管理シートに売上日が表示されるようにしたいのです。 シートは、このような形で、それぞれデータを入力しています。 売上表シート A列  B列    C列      D列 日付  顧客名  商品コード  売上金額 在庫管理シート A列   B列     C列    D列    E列 入荷日 商品コード  商品名  売上日  売上金額 商品コードが一致する売上表シートの日付を、在庫管理シートの売上日に表示させたいのですが、 上手くいきません。 売上金額はSUMIF関数で処理することができました。 Excelに関する知識も乏しく、非常に困っています。 なにぶん初めての質問のために質問内容も的を得ず、わかりづらいかもしれませんが、 どなたかお分かりになる方、是非ご教示くださいませ。

  • エクセルで条件に合わせて複数データを抽出したい

    シート1に基本データ(基データ)があり、シート2のセル内に条件を入れて、該当のデータをシート1から引っ張りたい。 具体的には、シート1に基本データ  ナンバ- 1 1 2 2 2 3 4 4 4  該当データ A B C D E F G H I シート2に 条件内容 1を入れてA B (複数データ)      2を入れてC D E       3を入れてF -----と、こんな具合になりたいのですが?   VLOOKUP は複数の抽出なので駄目でした。   

  • 条件に一致したデータの検索・抽出について

    エクセルで2つのデータから条件に一致したデータを検索・抽出がしたいのですが、うまく抽出することができないため、質問させていただきます データA |入荷日|商品番号|商品名|数量|金額| |1.1|1111|〇〇〇|10|10| |1.2|2222|◎◎◎|15|15| |1.3|3333|△△△|20|20| |1.4|4444|◆◆◆|10|10| データB |販売日|商品番号|商品名|販売数| |3.1|1111|〇〇〇|   | |3.2|    |AAA|100| |3.3|    |BBB|120| |3.1|2222|◎◎◎|   | |3.3|    |CCC|100| |3.1|3333|△△△|   | |3.1|4444|◆◆◆|   | データBから商品番号の一致したデータの一部を抽出してデータAに追加したいです (一部が難しいようなら1行そのまま抽出でも大丈夫です) 理想は |入荷日|商品番号|商品名|数量|金額|販売数| |1.1|1111|〇〇〇|10|10|   | |   |    |AAA|  |  |100| |   |    |BBB|  |  |120| |1.2|2222|◎◎◎|15|15|   | |   |    |CCC|  |  |100| |1.3|3333|△△△|20|20|   | |1.4|4444|◆◆◆|10|10|   | もしくは、関数を利用して以下の形にできれば、と思います |入荷日|商品番号|商品名|数量|金額|商品名|販売数|商品名|販売数| |1.1|1111|〇〇〇|10|10|AAA|100|BBB|120| |1.2|2222|◎◎◎|15|15|CCC|100|   |   | |1.3|3333|△△△|20|20|   |   |   |   | |1.4|4444|◆◆◆|10|10|   |   |   |   | データAをベースに、データBから重複データのうちすでにデータAにあるものを省き(1件目は重複データなので2件目以降)抽出する 1.データB商品番号重複しています。重複データの1件目はデータAと共通で、2件目以降を抽出したいです 2.データB商品番号の重複はそれぞれ違うため、1件も重複してないものもあれば3件ほど重複しているものもあります 3.データAは入荷日の範囲を指定したデータですが、データBは入荷日項目がないため抽出する必要のない内容・件数のデータもはいっています。その為、データAから抽出するのではなく、データAをベースにデータBから抽出がしたいです。 よろしくお願いします。

  • エクセル 複数の条件を抽出

    エクセルで複数の条件を抽出する方法について教えてください。 sheet2には以下の表があります。 A列  商品名1 B列  商品名2 C列  評価1 D列  評価2 sheet1には複数のデータがあり、そのデータを使って商品名と評価を出しています。 (商品名は手入力して、評価は関数を使って数値を出しています。) ここから、評価1がある値以上かつ評価2がある値以上の商品名1と商品名2をsheet3に抽出したいのです。(実際にやりたいのは、評価1が2%以上かつ評価2が0.9以上という条件です。) sheet3に出したいのは見やすいと思ったからで、どうしてもというわけではありません。 商品名が分かれているのはsheet2で作業がしやすいように分けています。必要であれば統合します。 評価1は書式設定で%表記にしています。 一応自分なりに調べてはみたものの、全くの初心者な為わかりませんでした。 初心者でもわかるように教えていただければありがたいです。

  • 【Excel】 値で分ける式

    こんにちは 添付データのように、 C列の値が1ならE列にB列の値を、2ならF列にB列の値を・・・ 並べる表を作りたいと思います。 EFG列の式を教えて下さい。 Excel2007です。

  • EXCEL データベースより別シートに抽出

    Sheet1に商品の受注状況をリストにしています。 A列-オーダーNo、B列-顧客No、C列-顧客名、G列-商品Aの注文数、H列-商品Bの注文数、、、、J列-商品Dの注文数、というように。これをデータベースとして、次のような事をするにはどのようにすればよいでしょうか? 商品の入荷はバラバラです。入荷した時点で、その商品の出荷指示書を顧客毎に作り倉庫に渡します。 そこで、、、 Sheet2に出荷指示書を作ります。 A1にオーダーNoを入力するとB1に顧客名が表示されます(これは出来ます)。 たとえば今回は商品Bが入荷したとして、A7に商品Aのコードを入れると、この顧客の商品Aに対する注文数がB8に表示されるようにしたいのですが、それが出来ません。。欲を言えば、もしその顧客が商品Aを注文していなければ、B8に「0」または「×」が表示されると尚良いのですが。 よろしくお願い致します。

専門家に質問してみよう