エクセルでデータの抽出する方法

このQ&Aのポイント
  • エクセルで特定の行のデータを抽出する方法を教えてください。
  • エクセルデータのC~G列が0でない行のA~Gのデータを別シートに抽出したいです。
  • 簡単な方法があれば教えていただきたいです。
回答を見る
  • ベストアンサー

エクセルでデータの抽出する際に困っています

エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     A   B   C   D   E   F   G   ---------------------------------- 1l  10   11   0   0   0   0   0 2l  12   13   0   0   0   0   0 3l  14   15   1   2   3   4   5 4l  16   17   0   0   0   0   0 5l  18   19   0   0   0   0   0 6l  20   21   6   7   8   9   10 7l  22   23   0   0   0   0   0 というような感じのエクセルデータに対して、     A   B   C   D   E   F   G    ---------------------------------- 1l  14   15   1   2   3   4   5 2l  20   21   6   7   8   9   10 というように、C~G列が0でない行のA~Gのデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

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

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

こんばんは! 色々方法はありますが・・・ 一例です。 ↓の画像のようにSheet1に作業用の列を設けています。 作業列H2セルに =IF(OR(COUNTBLANK(A2:G2),PRODUCT(C2:G2)=0),"",ROW()) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 (データがなくても構いませんので、しっかり下へコピー!) ※ 今後データが増えても対応できます。 Sheet2のA2セルに =IF(COUNT(Sheet1!$H:$H)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$H:$H,ROW(A1)))) という数式を入れ、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 参考になれば良いのですが・・・m(_ _)m

4845454
質問者

お礼

出来ました! 分かりやすい解説、ありがとうございます。

その他の回答 (6)

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

エクセルは、第1次的には、操作でやるのが筋であろう。 関数にまず頭が行く人が多いようだが。 であれば下記のような回答がまず出てくるだろう。 例データ A1:G8 a,b,・・・gは列(項目)見出し a b c d e f g 10 11 0 0 0 0 0 12 13 0 0 0 0 0 14 15 1 2 3 4 5 16 17 0 0 0 0 0 18 19 0 0 0 0 0 20 21 6 7 8 9 10 22 23 0 0 0 0 0 条件を示すセルとして I1:M2(何処でも良い) c d e f g <>0 <>0 <>0 <>0 <>0 ーー データーフィルターフイルタオプションの設定 指定した範囲にチェック リスト範囲 A1:G8 本当は$付き番地 検索条件範囲 I1:M2 抽出範囲 A16:G25 OK 結果 A16:G18 a b c d e f g 14 15 1 2 3 4 5 20 21 6 7 8 9 10 ーーー その他の方法で (1)関数や (2)VBAで はお好みでやれば良い。 (2)も全行読んで繰返す判別IF文の中にC-G列が0でないという 条件を入れたらしまい。

4845454
質問者

お礼

参考になりました、有難うございます。

noname#204879
noname#204879
回答No.6

添付図参照 Sheet2 において、 I2: =SUM(Sheet1!C2:G2)>0 Sheet2 をアクティブにして、下記の設定で[フィルタオプションの設定]を実行 抽出先: “指定した範囲” リスト範囲: Sheet1!$A$1:$G$10 検索条件範囲: $I$1:$I$2 抽出範囲: $A$1:$G$1

4845454
質問者

お礼

参考になりました、有難うございます。

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

No.3です! 前回書き忘れたのですが、 質問文ではC~G列すべてが「0」という条件のようですね。 前回の数式では、C~G列すべてが「0」でなくても、どれか一つでも「0」であれば同様の結果になってしまいます。 質問通りにC~G列すべてが「0」の場合であれば 作業列H2セルの数式を =IF(OR(COUNTBLANK(A2:G2),SUM(C2:G2)=0),"",ROW()) としてみてください。 何度も失礼しました。m(_ _)m

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

C~G列が全て0なら除外。 C~G列に1つでも0があれば除外。 どちらですか? 例を見る限り前者のようですが。

  • Saturn5
  • ベストアンサー率45% (2270/4952)
回答No.2

H2列にA2*B2*C2*D2.... と入力し、それが0より大きな行を抽出すればできるでしょう。

4845454
質問者

補足

その方法で抽出できましたが、空白を消すにはどうすればよろしいですか?

  • myi333
  • ベストアンサー率34% (10/29)
回答No.1

オートフィルターを使えば一瞬で出来そうですね

4845454
質問者

補足

どういうオートフィルターを使えばいいのですか?

関連するQ&A

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

    初めて質問させていただきます。 2つの銘柄の株価データをエクセルにコピペした後、日付と時刻が同じものを行を揃えて抽出したいのですが、いろいろ試してみましたがわかりません。 具体的には次のようにしたいのですが・・・。 【元データ】  A列     B列    C列    D列    E列    F列 ・ ・ 2007/11/9  9:20:00  520  2007/11/9  9:25:00  1544 2007/11/9  9:15:00  514  2007/11/9  9:20:00  1520 2007/11/9  9:10:00  513  2007/11/8  15:00:00  1430 2007/11/9  9:05:00  509  2007/11/8  14:55:00  1425 2007/11/9  9:00:00  501  2007/11/8  14:50:00  1427 2007/11/8  14:55:00  497   2007/11/8  14:45:00  1431 ・ ・ 【抽出後】 ・ ・ 2007/11/9  9:20:00  520  2007/11/9  9:20:00  1520 2007/11/8  14:55:00  497  2007/11/8  14:55:00  1425 ・ ・ どなたか宜しくお願いいたします。

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • Excel データの抽出について教えて下さい。

    初めて質問させて頂きます。 Excelでデータの抽出と言ったらいいでしょうか・・・ 「一定の条件に当てはまった場合に、別のセルに数字を入力する」 というような処理をしたいのですが、データ量が多くて、 どのようにやったら効率がいいのか、頭を悩ませています。 例えば・・・       A列  B列 1行目  111   A 2行目  112   B 3行目  115   C 4行目  115   C 5行目  118   D といったようなデータが1500件ほどあります。 このデータを使って、A列の中で番号が2つ(又は3つ等)あるものに、      A列   B列  C列 1行目  111   A 2行目  112   B 3行目  115   C    1 4行目  115   C    1 5行目  118   D といった感じで決まった数字を表示する方法がないでしょうか? こんな説明でご理解頂けるかどうか、心配なんですが・・・。 いい方法をご存知の方がいらっしゃいましたら、力を貸して下さい。

  • エクセルでデータを反映させたい。

    エクセルで下記のことをしたいのですが、どのような方法が ありますか?   A B C D E (列) 1 1  a b c d 2 2  e f g h 3 3  i j k l (行) ・他シートにA1の「1」を入れると、B~E列のデータが反映する。 (A列の数字が個人を指すもので、それを選択すると付随するデータ(B~E)も反映するということなんですが・・・。 説明が下手で申し訳ないのですが、どなたか教えて下さい。

  • エクセル 大量のデータから抽出し自動表示

    エクセルのSheet1のC列に大量(3500件くらい)のデータがあります。このデータは毎日さらに増えます。D列にもおなじだけのデータがあります。 (E列・F列にはあとから別のデータをさらに入力していきます。) Sheet1 A B C D E F     1 2 3 4     2 3 4 5      1 3 5 6     3 5      2 4      ・ ・     ・ ・ こんな感じです。 今回、このC列に入っているデータを検索し、完全に一致したデータのみを別シートに抽出したいのです。 C列にはいろいろな数字が入っていて、同じものもありますが、D列にも同じ数字とは限りません。 なので、VLOOKUPは使用できないのかと思っています。 一致したデータはその行をすべて別シートに抽出したいです。 検索をかけて一致しないデータがあった場合もその検索した数字は残しておいてさらに今後一致になるまでデータを残しておくという方法はできますでしょうか。 エクセルは2003です。 よろしくお願いします。

  • 抽出した表でデータをカウントしたいのですが・・・

    タイトルにあるとおり、あるデータをオートフィルで抽出した状態で、その抽出結果からデータをカウントしたいのです。 以下のような表があったとします。    A  B  C  D  E   F  G  H  I 1  ○           ○  ○  ○ 2     ○  ○     ○        ○ 3        ○  ○  ○  ○ 4  ○  ○     ○     ○ 5     ○            ○  ○    ○ 6     ○  ○     ○        ○ 7  ○        ○        ○     ○ 8     ○  ○     ○        ○ 9  ○        ○  ○     ○ この表では、仮に各行○が4つとして、ランダムに各列に○が振り分けられています。 A列・4個、B列・5個、C列・4個、D列・4個、E列・6個、F列・4個、G列・4個、H列・3個、I列・2個 という状態です。    A  B  C  D  E   F  G  H  I 1  ○           ○  ○  ○ 2     ○  ○     ○        ○ 3        ○  ○  ○  ○ 4  ○  ○     ○     ○ 5     ○            ○  ○    ○ 8     ○  ○     ○        ○ 9  ○        ○  ○     ○ ある条件でオートフィルによって、抽出した結果が上の表です。 今回の例では6,7行が消えた状態だったとします。 それぞれ、A列・3個、B列・4個、C列・3個、D列・3個、E列・5個、F列・4個、G列・3個、H列・2個、I列・1個 と、いう結果になりました。 このような状態になった表で最下段、この場合9から上に向かって3行分の○をカウントするような方法、または便利な関数はありますでしょうか? 今回の例ですと、最下段から、3行分、5、8、9のそれぞれの列の○をカウントするという感じです。 A列・1個、B列・2個、C列・1個、D列・1個、E列・2個、F列・1個、G列・2個、H列・1個、I列・1個 これが今回の例における求めたい結果です。 抽出してない状態でしたら、OFFSET関数でいけるのですが、抽出した状態からだと私のスキルでは解決できません。 どなたか、ご存知の方ご教示よろしくお願いします^^;

  • テキストファイルのデータをエクセルへコピーのやり方

    よろしくお願いします。 エクセル2000を使っています。 テキストのデータで A1/B1/C1    /はスペースです。 D1/E1/F1    データの長さは全部違います。 A2/B2/C2     D2/E2/F2 A3/B3/C3     D3/E3/F3      ・    ・(続く) といったものがあります。これをエクセルで    A列 B列 C列 D列 E列 1行 A1 B1 C1 D1 E1 2行 A2 B2 C2 D2 E2  ・・・ 3行 A3 B3 C3 D3 E3  (続く)          ・          ・(続く) という感じで別々のセルにいれて貼り付けしたいのです。 テキストデータを別々のセルに貼り付けする方法は 過去ログで「区切り位置」というのをつかえばいいというのはわかりましたが、この場合の複数行にわたるテキストデータをエクセルの1行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。 良い解決法をお願いします。

  • エクセル、任意の「行」だけを抽出したい。

    こんなことできますか? A1:F100のセル内にランダムに数字が入っています。 質問1) この中から 1行目→3行目→5行目と一つ飛ばしで入っているデータを抽出してH1:M100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 A1-B1-C1-D1-E1-F1 A2-B2-C2-D2-E2-F2 A3-B3-C3-D3-E3-F3 A4-B4-C4-D4-E4-F4 A5-B5-C5-D5-E5-F5 A6-B6-C6-D6-E6-F6 A7-B7-C7-D7-E7-F7 ・・・ A100-B100-C100-D100-E100-F100 の中から A1-B1-C1-D1-E1-F1 A3-B3-C3-D3-E3-F3 A5-B5-C5-D5-E5-F5 ・・・ を抽出して H1-I1-J1-K1-L1-M1 ・・・ H100-I100-J100-K100-L100-M100 の範囲内に表示させたいです。 質問2) 同様に、 1行目→4行目→7行目と二つ飛ばしで入っているデータを抽出してO1:T100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 ※ 説明がわかりにくいかもしれませんが、よろしくお願いします。

  • 指定した3つのセルのデータを抽出し別表を作成する

    A表(A~F列、1~7行)のうちB、D、F列にデータが入力表示されたデータを抽出して別のB表(A,B,C列、1~7行)を作成するためのエクセル関数をご教授下さい。下図のとおり、F列は同じデータですのでVLOOK関数で表示できるのですが、B,D列にデータが入力されていない場合は、表示しないようにしたいのです。よろしくお願いします。 また、3つのうち一つでもデータがない場合は、表示させない方法でも結構ですよろしくお願いします。 [A表]    A    B    C    D    E   F 1  5    8     9    12    2   ○ 2  4                       ○ 3       7          10       ○   4                          ○ 5  3    4     10    5       ○ 6                          ○ 7                          × [B表]    A    B     C 1  8    12    ○ 2  7    10    ○ 3  4     5    ○ 4 5 6 7

専門家に質問してみよう