データの抽出に関する問題

このQ&Aのポイント
  • データシートに入っているデータを特定の条件で抽出する式を考えていますが、うまくいきません。
  • 特定の氏名のデータを抽出するための式を使用していますが、一部のデータが正常に抽出されません。
  • 試しに鈴木のデータを抽出する式を使用した場合には正常に抽出できますが、渡辺や山田のデータは正常に抽出できません。どのような関数を使用すればいいでしょうか?
回答を見る
  • ベストアンサー

データの抽出する関数について

データシートにデータが入っています。 A B   C D・・・・続く 1 鈴木 りんご 2 鈴木 みかん 3 渡辺 りんご 4 鈴木 りんご 5 山田 バナナ 6 渡辺 バナナ 続く 氏名シートのA2のセルに氏名を入れると、その氏名のデータを抽出するように式を考えていますがうまくいきません。 =IF(ISERROR(INDEX(データ!A1:$I$15,MATCH($A$2,データ!A1:$A$15,0),2))=FALSE,INDEX(データ!A1:$I$15,MATCH($A$2,データ!A5:$A$15,0),2),"") とA4に式を入れて、A2には鈴木と入れて試みると、鈴木は正常に全件抽出できても、渡辺や山田はMATCHのデータ範囲のせい?で正常に抽出できません。 どのような関数にすればいいかどなたかご教授ください!

  • jinah
  • お礼率40% (118/291)

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

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

例データ Shhet3の A2:C10に A列  B列   C列  D列(計算結果) 鈴木 りんご 10 1 鈴木 みかん 20 2 渡辺 りんご 10 2 鈴木 りんご 30 3 山田 バナナ 40 3 渡辺 バナナ 50 3 D2に=COUNTIF($A$1:A2,"鈴木")と入れてC7まで複写。 Sheet4に行って A2に =INDEX(Sheet3!$A$1:$C$10,MATCH(ROW()-1,Sheet3!$D$1:$D$10,0),0) と入れてA4まで複写。 A2:A4をC列まで複写。 結果Sheet4の A列  B列   C列  鈴木 りんご 10 鈴木 みかん 20 鈴木 りんご 30 これにはSheet3とSheet4の式に手抜きがありますが 質問者のレベルならお分かりと、対策を略してます。 =IF(A2=””,””,・・・)や=IF(ISERROR(・・・)で逃げてください。(imogasi方式) ワーク列を使うことによって、配列数式を使うのに比べ判りやすくはなってます。

jinah
質問者

お礼

imogasiさんの方法で行いました。 ワーク列への設定と+以下の関数で出来ました。 =IF(ISERROR(INDEX(データ!$A$5:$I$124,MATCH(ROW()-15,氏名!$J$16:$J$45,0),2))=FALSE,INDEX(データ!$A$5:$I$124,MATCH(ROW()-15,氏名!$J$16:$J$45,0),2),"") ありがとうございます!!

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 配列確定をしないで、取り出す方法を考えてみました。 (ただし、配列は使っています。) =IF(COUNTIF(データ!$A$1:$A$15,$A$2)>=ROW(A1),INDEX(データ!$A$1:$I$15,SMALL(INDEX((データ!$A$1:$A$15=$A$2)*ROW($A$1:$A$15),,),ROWS($A$1:$A$15)-COUNTIF(データ!$A$1:$A$15,$A$2)+ROW(A1)),2),"") ちょっと解説: IF( COUNTIF(データ!$A$1:$A$15,$A$2)>=ROW(A1),~,"") これは、同じ検索値がいくつあるか数えて、それ以上の行はエラーが出るので、""で空白にします。 INDEX(データ!$A$1:$I$15, ~,2) は、通常のINDEX関数 SMALL(INDEX((データ!$A$1:$A$15=$A$2)*ROW($A$1:$A$15),,) 同じものがある場合に、その行番号を小さい順から並べます。(ただし、False のところは、0になっています。) 中に、INDEX があるのは、配列を一旦、標準で扱えるように変換しています。 ,ROWS($A$1:$A$15)-COUNTIF(データ!$A$1:$A$15,$A$2)+ROW(A1)) SMALL関数の中の0の数を数え、それより大きい数値の順位の数値を、1つずつ、取り出します。 このような考え方で作られています。

関連するQ&A

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

    エクセル2010 重複データの抽出。 重複データの抽出方法をご教示ください。 抽出先はシート1のA列A3~抽出データの分だけ リストはシート2のB2:AB32まで フィルターオプションなども使ってみたのですが どうも上手くいきません。 どなたか知恵をお貸しください。 方法はできれば関数だといいのですが(データが増えてもいいように) できなければ他の方法でもいいです。 VBAなどは全くの初心者なので出来れば避けたいのですが… シート2     A    B   C    D~AB32 1  "" 2 いちご ばなな いちご りんご 3 みかん いちご ばなな いちご 4 りんご ばなな いちご みかん 5 みかん いちご ばなな りんご 6 ばなな ばなな りんご いちご : : 32 シート1(重複データなし)  A 1  "" 2  "" 3 いちご 4 みかん 5 りんご 6 ばなな 7 : : 抽出リストのデータはシート2のB2:AB32にぎっしり入っています。 宜しくお願い致します。

  • EXCELにて3つの条件を違うシートに抽出したいです。

    エクセルで元データ(sheet1)を3つの条件にあったデータを別シート(sheet2)に抽出し、 なおかつ抽出したデータを元データ(sheet1)から消去する方法はありますか? できれば関数でお願いします。 ☆シート1☆※元データ   A B C D 1 氏名 出身 作業 時間 2 鈴木 愛知 1 1.0 3 渡辺 静岡 2 1.5 4 鈴木 愛知 2 2.0 5 松坂 岐阜 3 0.5 6 鈴木 愛知 3 1.0 7 鈴木 愛知 4 1.5 8 森田 三重 2 0.5 ☆シート2☆ A B C D 1 氏名 出身 作業 時間 2 鈴木 愛知 1 1.0 3 鈴木 愛知 2 2.0 4 鈴木 愛知 3 1.0 5 鈴木 愛知 4 1.5 補足 ・シート2の条件として『氏名』と『出身』が同じでなおかつ『作業』の1,2,3,4がある人のみ。 このとき、『作業』が4がある人のみ抽出したいです。 ・抽出したときにシート1に抽出したデータ(例では鈴木)が消えるようにしたいです。 説明が不十分で伝わりにくいとは思いますが、 よろしくお願いします。

  • 連続していない日付データからの抽出

    エクセルで、   A   B 1 日付 売上   2 11/21  900 3 11/22 2000 4 11/26 1800 5 11/27 1300   D    E 1 日付  前日比 2 11/21 **% 3 11/22 **% 4 11/26 **% 5 11/27 **% とあります。 そこで、   G   H   I 1 日付 売上 前日比 2 任意 (抽出) (抽出) 3 と、Gに日付を入力したらH、Iにデータが抽出されるように関数を作りたいと思います。 Hには =INDEX(A2:B5,MATCH(G1,A2:A5,0),2) Iには =INDEX(D2:E5,MATCH(G1,D2:D5,0),2) と入力して抽出をしましたが、 例えばG列に元データには無い、「11/23」が入力されたときは、11/23よりも先で1番にくる11/26のデータを抽出するようにしたいのですが、どうしたらいいでしょうか? よろしくお願いします。

  • エクセルの関数によるデータ加工

    エクセルのデータ処理に困っています。 シートA シートB シートC 3つのデータがあります。 シートB・シートCはシートAからデータ抽出して 追加加工したものです。シートAには全データがあります。 ただシートAのうちどのデータがシートB・Cにて未加工かをフラグを立てて 一目でわかるようにするにはどの様な数式を使えば良いでしょうか? 但し共通する項目は番号のみです。氏名は婚姻などで変更されている可能性があります。 ご教授お願いいたします。 シートA 番号 氏名  内容  チェック 101 山本  ・・・     102 加藤  ・・・     130 渡辺  ・・・     131 小川  ・・・     122 笹田  ・・・    ○ 133 小芋  ・・・     123 戸川  ・・・     134 垣田  ・・・     シートB 番号 氏名  住所  内容 101 山本  ・・・   ・・・ 130 渡辺  ・・・   ・・・ 131 小川  ・・・   ・・・ 123 戸川  ・・・   ・・・ シートA 番号 氏名  内容  電話番号 102 加藤  ・・・     133 小芋  ・・・ 134 垣田  ・・・

  • 「エクセルでデータのある行だけを他のシートに抽出する」を参考にしたのですが・・・

    下記過去の質問・回答を見つけ私も参考にさせて頂きましたが手詰まって困っています。 http://okwave.jp/qa943364.html なおこの質問の数式・例は全て過去質問の回答者:imogasiの回答を参考にさせて頂きました。 やりたい事→データを抽出する場所(A1をA3/B1をB3)を変更したいのです。 現状は(例データ)Sheet2のA1:B9(C列は関数式を入れた結果) A  B C 210 伊藤 1 211 山田 2 212 0 2 214 2 216 近藤 3 217 鈴木 4 219 0 4 220 4 221 大田 5 Sheets2の C1に=IF(A1="","",COUNTA($B$1:B1)-COUNTIF($B$1:B1,0))がはいり下にコピーしてます。 抽出するSheets3の A1に=IF(ROW()>MAX(Sheet2!C:C),"",OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,0)) B1に=IF(ROW()>MAX(Sheet2!C:C),"",OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,1)) 上記でうまくデータを抽出できるのですが、抽出する場所をA1及びB1を変更するとうまく抽出できません。 抽出場所をA3及びB3にする為にはどのような工夫が必要になるのでしょうか?

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

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

  • 関数を使って重複するデータを抽出するには?

    今各年度の重複データの抽出の方法がわからなくて困っています。 H20年度         平成21年度 ID   氏名   住所  ID   氏名   住所 102 山田太郎  東京  505 山田次郎  福岡 205 山田花子  京都  603 山田五郎  滋賀 505 山田次郎  福岡  205 山田花子  京都 のような表があって H20と21で重複する人を別表に抽出したり、逆に重複しない人を抽出するにはどのような関数を使えばいいのでしょうか? よろしくお願いします

  • データの抽出

    名簿形式のデータAがあります。 そのデータAの中から一部を取り出したデータBを作成しました。 質問は全データである「A」から「データB以外のデータ」であるCを 作成するにはどうすれば良いのでしょうか?エクセルの関数かアクセスを使って簡単に抽出できるのでしょうか。よろしくお願いします。 A   氏名  住所 など 1 石川  東京 2 佐藤  名古屋 3 山田  北海道 … 100   B   氏名  住所 2 佐藤  名古屋 5 本田  東京 10 … 78 C    氏名 住所 1 石川 東京 3 山田 北海道 4

  • エクセルでデータのある行だけを他のシートに抽出する

    エクセルで、氏名のある行だけ残し「0」「空欄」の行はのぞく事をリンクのような形で自動的に抽出する方法があったら教えて下さい。 例 1行目 210 伊藤 2行目 211 山田 3行目 212 4行目 213 0 5行目 214 渡辺     ↓   別シートへ     ↓ 1行目 210 伊藤 2行目 211 山田 3行目 214 渡辺

  • vlookup等の検索・行列の関数でハイパーリンクも抽出することは可能でしょうか?

    いつも助けてもらっています。ありがとうございます。 excelの関数に関しての質問なのですが、現在エクセルファイルで A B C DEFG・・・・・ 1 氏名 所属 生年月日 成績 2 鈴木 営業1 2000/1/1 0000000 3 山田 営業2 2000/1/1 0000000 4 佐藤 営業3 2000/1/1 0000000 ・ ↑web管理画面へのハイパーリンク ・ ・ ・ (ごめんなさい上記ABC・・・のズレが直せない・・・ A=氏名 B=所属 C=生年月日 DEFG・・・=成績 です。見辛くて申し訳ございません) 上記のような状態で所属部分にハイパーリンク(関数ではなく埋め込み)がデータベースとしてあります。 これを同じ形で同一ファイル内の別シートに所属別で分けようとしています。 まずvlookupを使用し =IF(ISERROR(0/LEN(VLOOKUP($A2,A2:Z100,4,0))>0),"",(VLOOKUP($A2,A2:Z100,4,0))) という関数で成績の数値をうまく抽出できるところまではできたのですが 同じ関数で列をずらしハイパーリンクがある所属のデータを別シートに抽出しても ハイパーリンクが適用されておらず、もちろんクリックしてもリンクしない状態です。 理想的には所属別に分けたファイルに氏名だけ入力すれば後はvlookupで データベースから同じデータを抽出するというのが一番良い状態です。 また、人の入れ替わりや成績の数値変動が多いので単純に=sheet1!B3というような処理だけでは難しいです。 そこで、ご質問させていただきたい点が 1・vlookup・match・index等で検索・行列の関数で埋め込んだハイパーリンクも抽出することは可能か? 2・もしできないとしたら他に方法があるか? という2点です。長文失礼致しました。 なお、使用PCはwindows2000・excel2000です。 ご教授いただけると幸いです。よろしくお願い致します。

専門家に質問してみよう