Excel関数でデータを抽出する方法

このQ&Aのポイント
  • Excel初心者教室での課題で、データを抽出する方法についてアドバイスを求めています。
  • オートフィルター機能を使用せず、関数を用いてデータの抽出を行いたいです。
  • IF関数やVLOOKUP関数などを使ってデータを抽出する方法についての助言をお願いします。
回答を見る
  • ベストアンサー

Excel関数でデータを抽出する方法

Excel初心者教室での課題で、以下のような問題を出されました。 次の表から、データが全てあるものだけを抽出し、sheet1からsheet2に移しなさい。 〈名前〉〈 E社〉〈 F社〉〈 G社〉 〈 A 〉〈 1 〉 〈 2 〉 〈 3 〉 〈 B 〉 〈 2 〉 〈 2 〉 〈 C 〉〈 3 〉〈 1 〉〈 5 〉 〈 D 〉 〈 1 〉 上の表からAとC(3社共にデータがある)ものだけを抽出したいのですが、回答条件が ●データ抽出にはオートフィルター機能は使用せず、関数で処理すること ●今まで習った知識で回答可能 とあり、まだ初心者クラスで、データ抽出に関係がありそうな関数はIF関数やVLOOKUPくらいしか思い当たらず、それらを使って抽出を試みたのですが「三社共にデータがあるものだけ抽出」という条件が処理出来ず、上手く出来ませんでした。 手詰まりで先に進めずに今、困っています。 そこで、Excelに詳しい方にアドバイス頂けたらと思い、書き込みしました。 宜しくお願いします。 文章力が低いので分かり辛い文面で、表も見辛くてすみません。

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

  • ベストアンサー
回答No.5

No.1 です。結構、いろいろご存じのようですね。 ではオートフィルタを使わず、作業列は使っていいってことなら、こんな感じではいかが? E2   =a1+(counta(b2:e2)=4)     あるいは     =a1+if(counta(b2:e2)=4,1) G2~G5 1~4 H2   =vlookup($G2,$A$2:$E$5,column(H$1)-column($G$1)+1,)         ……エラー回避なし     あるいは     =iferror(vlookup($G2,$A$2:$E$5,column(H$1)-column($G$1)+1,),"-")  ……エラー回避あり H2 セルを H2:K5 のセル範囲にコピペあるいはドラッグ。 VLOOKUP 関数は第 4 引数の指定内容により、データを拾ってくる行が変わるという点にご注意。試しに第 4 引数に 1 を入れてみれば分かります。 何か分からないことがあればお尋ねください。

heme-neko
質問者

お礼

あけましておめでとうございます。 二度目のご回答、有難うございます(>.<) ご丁寧な表までお作り頂いて、すみませんでした(;_q) 早速課題に取り組み、無事に直ぐに作業を終えることが出来ました。 その後、課題の続きに手間取ってしまい(先程無事に終わりました)お礼が遅れてしまい、申し訳ございませんでした。 この度はお忙しい中、本当に有難うございました。

その他の回答 (5)

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

初心者でも分かり易い方法は作業列を作って対応する方法です。 例えばシート1に元の表が有るとしてA1セルからD1セルには項目名が2行目から下方にそれぞれのデータが入力されているとします。ここではF列までもが利用される場合を示します。 G列を作業列としてG2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(B2:F2,"<>")=COUNTA(B$1:F$1),MAX(G$1:G1)+1,"") この式の意味はB2セルからF2セルの間で空白以外のセルの数が1行目の項目に書いた項目の数と一致している場合にはG$1からG1セルの最大値にプラス1を下数値を表示しなさいとのことです。つまり3つの項目がB1セルからF1セルの間に入力されていればデータのあるセルの数が3個の場合に数値を上から順に1つずつ加算していくことになります。 シート2はお求めの表としてA列からF列までの2行目から下方に表示させるとしてA2セルには次の式を入力してF2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$G:$G),"",IF(INDEX(Sheet1!$A:$F,MATCH(ROW(A1),Sheet1!$G:$G,0),COLUMN(A1))="","",INDEX(Sheet1!$A:$F,MATCH(ROW(A1),Sheet1!$G:$G,0),COLUMN(A1))))

heme-neko
質問者

お礼

あけましておめでとうございます。 お忙しい中、ご回答有難うございました(>.<) とても分かりやすい説明で、目から鱗が落ちました。 課題も無事に終わりました。 本当に助かりました。有難うございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.4

>今まで習った知識で回答可能 習ったことだけで答えを導き出せってことかな? だとすると何を習っているのかがはっきりしないと、的確な回答は難しい >三社共にデータがあるものだけ抽出 〈名前〉 E社 F社 G社 〈 A 〉〈 1 〉〈 2 〉〈 3 〉 〈 C 〉〈 3 〉〈 1 〉〈 5 〉 こんな感じの表を sheet2に作れって事でいいのかな? sheet1に作業列使用が可能であれば IF関数、COUNT関数、ROW関数、、RANK関数かLARGE関数、VLOOKUP関数 を利用して出来そうですが、全部習っていますか?

heme-neko
質問者

お礼

こんばんは。お忙しい年の瀬に、ご回答有難うございました。 説明不足で分かり辛い文章になってしまい、申し訳ございませんでした。 「習ったことだけ(習ったことの応用)で答えを導き出せ」ということだと思います。 はい。 〈名前〉E社 F社 G社 〈A〉〈1〉〈2〉〈3〉 〈C〉〈3〉〈1〉〈5〉 上のような表を、sheet2に作りたいです。 sheet1に作業列可能です。 IF関数、COUNT関数、ROW関数、RANK関数、RARGE関数、VLOOKUP関数、全て習っております。 お忙しい中大変恐縮ですが、ご指導いただけましたら幸いです。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

>データが全てあるものだけを抽出し、sheet1からsheet2に移しなさい どういう体裁に仕上げたいのかご質問で情報提供されていませんが、初心者さん向けであれば、添付図の上段左から右のようにします。 シート2のA2: =IF(COUNT(Sheet1!$B2:$D2)=3,Sheet1!A2,"") 右にコピー、下にコピー。 もしも添付図の下段のように詰めて表示したいと思っているのですと、課題が本当にそんなのを求めているのか再確認してください。 もちろん頑張って細工すれば、やればできる内容ですが、あまり初心者さん向けの課題とは言えません。 シート1のC2: =IF(COUNT(E2:G2)=3,SUM($C$1:C1,1),"") 以下コピー シート2のC2: =IF(ROW(C1)>MAX(Sheet1!C:C),"",ROW(C1)) 以下コピー シート2のD2: =IF($C2="","",VLOOKUP($C2,Sheet1!$C:$G,COLUMN(B2),FALSE)) 右にコピー、下にコピー。

heme-neko
質問者

お礼

こんばんは。お忙しい年の瀬に、ご回答有難うございました。 わざわざ表までお作り頂いて、お付き合い下さり、本当にすみません(;_q) 有難うございます。 お貼り頂いた画像が正にそうしたかった形でしたので、泣きそうになりました。 全く違うことをしていたので、自分ではとても解答出来なかったと思います。 本当に助かりました。有難うございました。

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

こんばんは! >●今まで習った知識で回答可能 とありますが、どの程度の関数をご存じなのか判らないので、 一般的な関数を使った方法の一例です。 ↓の画像のようにSheet1に作業用の列を設けます。 Sheet1の作業列E2セルに =IF(COUNTA(B2:D2)=3,ROW(),"") という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 Sheet2のA2セルに =IF(COUNT(Sheet1!E:E)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!E:E,ROW(A1)))) という数式を入れ下へオートフィルでコピーで画像のような感じになります。 ※ 上記数式内の関数で判らない関数があれば、ご自身で調べてみてください。m(_ _)m

heme-neko
質問者

お礼

こんばんは。お忙しい年の瀬に、ご回答有難うございました。 記述が足らなくて、分かり辛い文章になってしまい、すみませんでした。 わざわざ表までお作り頂いて、本当に有難うございます(;_q) 何をすれば良いのかも分からなくなってしまい、途方にくれていたので、助かりました。 お答え頂いた関数は、幸い見たことのあるものばかりでしたので、参考にさせて頂きます。 本当にすみませんでした。有難うございました。

回答No.1

AND 関数とか OR は習いましたか?「空白セルである」とか「空白セルでない」条件とは、どう書くのでしょうか。また、複数の種類の関数を組み合わせるときは、どんな数式になるのでしたでしょうか。質問者さんのご存じのものだけでできそうですね?実際に数式を作ってみた上で、うまく行かないようならその数式を示しながらまたお尋ねください。

heme-neko
質問者

お礼

こんばんは。お忙しい年の瀬に、ご回答有難うございました。 「データの抽出」と課題にあったので、今までIF関数のことばかり考えていました。 「空白セルである」「空白セルでない」条件はどう書くのか、授業のレジュメを参考に、もう一度数式を考え作ってみます。 有難うございました。

関連するQ&A

  • EXCEL関数でフィルタの様にデータ抽出したい

    発注品一覧表から社別にデータを抽出した発注シートを関数で作りたいです。 オートフィルタは諸事情あって使用しません。 過去の質問のこちらが、かなり近い回答なのだと思いますが 不勉強で自分用に修正ができませんでした。 http://okwave.jp/qa/q3157199.html 一覧表はこのようになっています。 日付 社名 品目 値段 4/1  C社 鉛筆 50円  4/1  A社 定規 150円 4/2  C社 ペン 100円 4/2  B社 鉛筆 100円 社別の別シートに日付・品目・値段を一覧から関数で抽出できるでしょうか? どうぞよろしくお願いします。

  • Excel関数である条件に満たしたものを抽出

    Excel関数である条件に満たしたものを別シートに抽出したいのですが たとえばsheet1に A   B    C ID  名前   条件フラグ 101  太郎   1 102  花子   3 103  一郎   2 104  二郎   3 というデータがあってここから 条件フラグが「3」のものだけをsheet2に抽出したいのですが オートフィルタではなく関数で処理をしたいと思います。お分かりの方、ご教授ください。

  • エクセルでデータ抽出

    エクセル初心者です。 エクセルでに次のような表を作っております。 (Sheet1) 担当 会社 郵便番号 住所 菊地 A社 0000000 ○○○○ 菊地 B社 0000000 ○○○○ 菊地 C社 0000000 ○○○○ 田中 D社 0000000 ○○○○ 田中 E社 0000000 ○○○○ 山本 F社 0000000 ○○○○ 山本 G社 0000000 ○○○○        ・        ・        ・ と800件くらいあるのですが、 これを 別シート(Sheet2)で名前を菊地と入力すると菊地のデータが一覧で出るようにしたいのですが、どうしたらよいでしょうか。 できれば、マクロを使わずに関数でやりたいです。 VLOOKUPかな?と思い、いろいろ調べたのですが、抽出したいデータが複数あるので、悩んでおります。 すみませんが、どなたかご指導お願い致します。

  • 表形式のデータから該当データを抽出する方法

     表形式のデータから該当データを抽出する方法を教えていただきたく存じます。  次のような表形式のデータがあるとします。    A  B  C あ  1  3  5 い  2  4  6  そして、「あ」と「A」の時には1、「い」と「B」の時には4というようなデータを抽出したく存じます。  私の考えた方法は、hlookup関数とvlookup関数を組み合わせる手法ですが、他に方法はありますでしょうか。

  • 【EXCEL関数】違うシートに抽出結果を出したい

    一覧表から「○」の条件が付いたデータのみを別シートに関数で抽出したいです。 フィルタではなく関数を使用したいのは、抽出したデータから名前の定義を使用して リスト表示をさせたいためです。ご教示のほど、宜しくお願いします。 シート1は一覧表となっており、A列に「○」のついたデータのみをシート2に表示 シート1(一覧表)   A  B 1  ○  山田太郎 2  ×  佐藤次郎 3  ○  高橋三郎 4  ×  鈴木四郎 5  ×  中村五郎 シート2(抽出結果を表示させる)   A  B 1  ○  山田太郎 2  ○  高橋三郎 3  4  5 フィルタオプション、当方の考え得る限りの配列関数等、色々試しましたが、 不勉強のために上手く結果が表示されませんでした。 ご教示のほど、宜しくお願い致します。

  • データ抽出について

    エクセル初心者です。 エクセル2003を使っています。 sheet1に元データとなる表があります。 ・データセル内は数値データです。 ・行方向へは200程度 ・列方向へは1500程あります。  A   B    C    D   E     F  1日付 項目1 項目2 項目3 項目4 項目5 ・・・ 2 3 4 5 6 この元データからsheet2へ日付をキーにして行データを抽出したいのです。 抽出先のsheet2のA列に予め目的の日付データのみ1200程入っています。 最初Vlookupでやり始めたんですが無理と分かりました。 フィルタオプションで試みたのですが、「検索条件範囲」の式の書き方が 分からず困っております。 OKWaveの関連したQAを参考に試行錯誤を続けていましたが、進展がありません。 お詳しい方よりのご回答をお待ちしております。

  • 【エクセル】データ抽出する関数の使い方

    データを抽出するのに、今までVlookupなどを使っていました。 今回2つの項目(下記の表だと月と色)を指定して、抽出したいです。 Sheet1(元データ)   A  B  C   1 月  色 値段 2 01  赤 4532 3 02  赤 1495  4 01  白 10012 5 03  赤 7568 6 02  白 78964 7 01  緑 78932 8 02  緑 7894 9 上記のような表から、下記のような形にデータを抽出したいです。 Sheet2   A  B   C    D    E  1 色 1月値段 2月値段 3月値段 2 赤 4532  1495 7568 3 白 10012 78964 4 緑 78932 7894 5 … 6 … Sheet2の色の項目内(A列)の順番は決まっています。 色に対応する、月ごとの値段の出し方がわかりません。 Sheet1のデータは2000行弱くらいの量です。 月は3月までです。説明不足名ところがありましたら 追記いたします。 ※重要なのが元データのシートで作業列などを追加することが出来ませ  ん(色と月を結合した列を追加などが出来ません)。Sheet2のセル内  に関数を記入するだけで今回のようなことは可能 でしょうか。 すみませんがご指導よろしくお願いいます。

  • Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さ

    Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さい! 下のデータで、A列でB、B列で赤を選んだ人は「みかん」という「みかん」を抽出する関数を教えて頂けませんでしょうか? データシートとは別に集計シートを作成しています。 お忙しい中恐れ入りますが、ご教示下さいますようお願い申し上げます。。。 ●データ A B C 1 A 赤 みかん 2 B 赤 りんご 3 C 白 いちご 4 B 青 いちご 5 D 赤 みかん 6 A 青 みかん 7 C 黄 りんご 8 E 赤 バナナ

  • Excel関数について教えて下さい。

    データベースの中から2つの条件に合うデータの抽出がしたい。 例)  A列に店舗番号、B列に職位、C列に名前があるデータベースの中から、 別ファイルで店舗番号別のマネージャー(職位)が誰であるかの一覧表を作成したい。 単純に、オートフィルタでデータ抽出はできるが、頻繁にデータベースの内容が変わるため、 常に最新のデータが作れるように、関数で一覧表をつくりたい。 IFとANDとVLOOKUPでいろいろと考えてみてますが、うまくいきません。。。 どうぞ宜しくお願いいたします。

  • Excel2007でのデータ抽出

    前任者が作ったExcelでの給料計算表を使用していますが、先日そこに金種計算表を組み込めないかと言われました。 当方VBAなどは全くの初心者です。 VLOOKUP関数を使ってデータテーブルから金額を読み込み金種計算が出来るようにはしてみたのですが、データテーブルを更新すると金種計算表にある数式がエラーを吐いてしまいます。 金種計算表には一行目から =IF(B4="","",VLOOKUP(B4,テーブル!D4:BG4,10)) と関数を入れてあります。 B4は氏名欄です。 その際にはちゃんと金額が表示されていますが、入力フォームからデータテーブルを更新すると =IF(B4="","",VLOOKUP(B4,テーブル!#REF!,10)) となってしまいます。 金額を手入力すればいいのですが、全社員分となると膨大な量になってしまいます。 なんとか自動で抽出出来ないものでしょうか。 お知恵をお貸しいただければ幸いです。 稚拙な説明ではありますがよろしくお願いします。

専門家に質問してみよう