• 締切済み

EXCEL:ゼロ以外のデータを詰めて抽出する方法

初めて投稿します。よろしくお願いいたします。 EXCEL2000を使用しています。 オートフィルタを使わずに 関数でデータを抽出する方法で悩んでいます。 下記<データ>が存在しています。 2行目がゼロ以外のものを、 別シート<抽出>に上から詰めて抽出したいのです。 <データ>   A列 B列 C列 D列 E列 1行 1  2  3  4  5  ←日付 2行 5  3  0  2  0  ←数字 <抽出>別シート   A列 B列  1行 1  5 2行 2  3 3行 4  2   ↑  ↑   日付 ゼロ以外 関数については中級レベルだと思います。 いろいろ試したのですが、関数を組み合わせてもなかなかうまくいきません。 どなたかご教授いただけないものでしょうか? よろしくお願いいたします。

みんなの回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

 <データ> のあるシートを「Sheet1」、<抽出>別シート を「Sheet2」とします。 A)一発で抽出する方法(配列数式) 1)Sheet2 A1 に =IF(ROW(A1)<=COUNTIF(Sheet1!$2:$2,">0"),INDEX(Sheet1!$1:$1,SMALL(IF(Sheet1!$A$2:$CV$2=0,256,COLUMN(Sheet1!$A$2:$CV$2)),ROW(A1))),"") をコピペし、[Shift] + [Ctrl] + [Enter] で確定します。 2)Sheet2 B1 に =IF(ROW(A1)<=COUNTIF(Sheet1!$2:$2,">0"),INDEX(Sheet1!$2:$2,SMALL(IF(Sheet1!$A$2:$CV$2=0,256,COLUMN(Sheet1!$A$2:$CV$2)),ROW(A1))),"") をコピペし、[Shift] + [Ctrl] + [Enter] で確定します。 3)Sheet2 A1:B1 を選択、下方向にコピーします。 B)二発で抽出する方法 1)Sheet1 A3 に =IF(A2>0,COLUMN(),"") と入力し、これを右方向に必要分コピーします。 2)Sheet2 A1 に =IF(ROW(A1)<=COUNTIF(Sheet1!$3:$3,">0"),INDEX(Sheet1!$1:$1,SMALL(Sheet1!$3:$3,ROW(A1))),"") Sheet2 B1 に =IF(ROW(B1)<=COUNTIF(Sheet1!$3:$3,">0"),INDEX(Sheet1!$2:$2,SMALL(Sheet1!$3:$3,ROW(B1))),"") をコピペします。 3)Sheet2 A1:B1 を選択、下方向にコピーします。

  • shiritai
  • ベストアンサー率43% (10/23)
回答No.1

<データ>のあるシートで  セルA3 : =IF(A2<>0,1,"") (B列以降もコピー。以下同じ)  セルA4 : =IF(A2<>0,COUNT(A3:$A3),"")  セルA5 : =A1  セルA6 : =A2 つぎに、  A列の10行目から下に、1から順に数字を入れる  9行B列に「2」、9行C列に「3」を入れる  セルB10に、 =HLOOKUP($A10,$A$4:$F$6,B$9,FALSE)  といれてC列もコピー、さらに下にコピーすれば<抽出>の  ようになります。

higuchi935
質問者

お礼

shiritaiさん、ありがとうございます。 とても速い回答で驚きました。 難しく考えていたので、これなら単純明快でわかりやすいです。 そうですよね~ 初心に戻った心境です。助かりました。 3行目、4行目に  行を追加できるかどうか、確認してから試してみようと思います。 完成したらご報告いたします。まずはお礼までです。

関連するQ&A

  • 必要なデータを抽出したい

    必要なデータを抽出したい    A   B    C   D ・・・ 1 7/1   101   102  103 2 7/2   101   103 3 7/3   105   203 4 7/4   103   205 5 7/5   101   202 ・ ・    ・ ・ ・    ・ ・ ・    ・ Excelで上の様にA列に日付、B行列以降に数字が書かれているシートから、抽出したい数字が含まれている行を別シートに抽出するマクロはどのように書けばよろしいのでしょうか。 技術者の方、よろしくお願いします。 例えば、101が含まれているデータを抽出したら、sheet2に    A   B    C   D 1 7/1   101   102  103 2 7/2   101   103 3 7/5   101   202 となるようにしたいのです。

  • 今日の日付のデータをすばやく抽出するには・・

    売上日報をエクセルで作っています。 A列に1から順にNOを入れています(LOOKUP関数を使うためです) B列に日付を入れています。 C列に社名を入れています。 その他の列にもいろんなデータが入っています。 本日の日付だけをすばやく抽出したいと思うのですが、どうすれいいか分かりません。 オートフィルタで今日の日付を選ぶ方法はやれます。 でも、もっと早く抽出できる方法はないでしょうか? 数ヶ月分のデータが入っているため、オートフィルタの三角をおしたあと、今日の日付を探すのに結構手間取ります。 もっとすばやく抽出したいのです。どんな方法でもいいです。どなたか教えて下さい。

  • エクセルのオートフィルタでのデータ抽出&カウント

    エクセルのローデータでのオートフィルタでのデータ抽出&カウントで困っています。 A列にNo.、B列にデータB、C列にデータC、D列にデータDがあるとします。 それぞれの列に1~9までの数字があり、 それぞれの列、 データの一番下(正確には1行開けて)にはSUMやCOUNTIFなどの関数(計算式)が入っています。 で、これをフィルターにかけ抽出した際、この抽出したデータのみで計算の値を表示したいのですが、 やってみると 全データの計算の値で表示されてしまいます。 どうすればよいのでしょうか? 大変困っています。 よろしくお願いいたします。

  • データの抽出について

    エクセルの関数について質問します。 あるデータから特定の文字を含む行などを抽出する場合、通常オートフィルター機能を使いますが、これを関数で抽出することはできますでしょうか? 日付が入っているデータ(200行くらい)からある特定の日付で、さらに特定の文字を含まれているものを抽出し利用したいと考えています。 AND関数を使った場合、特定のセルで指定(たとえばB2='2007/3/1'、C2='ある特定の文字')はできるのですが、B2:B100の中から='2007/3/1'でなおかつ、C2:C100='ある特定の文字'といった絞り込みができずに苦戦しています。 よろしくお願いいたします。

  • EXCEL20001分ごとのデータを抽出したい

    お世話になっておりますm(__)m(このごろは頻繁に(^^ゞ) タイトルどおり、1分ごとのデータを抽出したいのです。 データは次のようになっています。 A列1行目から縦に日付です。 2002/1/1 2002/1/1 2002/1/1 2002/1/1 2002/1/1 2002/1/1 上記のように同じ日付がずーっとつづいています B列1行目から縦に時間です。 0:30:04 0:30:06 0:30:08 0:30:10 0:30:12 0:30:14 0:30:16 ・ ・ ・ 上記のように2秒ごとにデータがあるのです。 ただし、C列にもその日付と時間に対応したデータがあります。 2秒ごとにデータがあるのですが、 それを1分ごとのデータを抽出したいのです。 どうにかこうにかしてできないものでしょうか? 関数とかでできるでしょうか? VBAとかはぜんぜんやったことがないので、 もしそれをつかわなければ出来ない場合は、 詳しく説明してくださればうれしいです(涙

  • Excel2000マクロ

    お世話になっております。 マクロのことで教えてください(マクロ初心者です(^_^;)) A列・・日付 B列・・時刻 C列・・数値データ “時刻”が2秒おきのデータなので1分おきのデータを抽出したいので、D列にSECOND関数を使って秒だけを抜き出し、 オートフィルタで“0”だけを抽出し、これで1分おきのデータを抽出し、 B列がX軸でC列がY軸のグラフを作ります。 これをマクロで記録して自動的にやりたかったのです。 ですが、 「D列にSECOND関数を使って秒だけを抜き出し、 オートフィルタで“0”だけを抽出し、これで1分おきのデータを抽出し、・・」 のところは、うまくマクロで自動化できるのですが、 別シートに出来たグラフを見ると、一番最初に記録して作ったグラフがそのまんまできてしまいます。 次のデータでグラフをつくりたかったのですが。。 これはどうしてでしょう? グラフまではうまくできないのでしょうか?

  • エクセルで抽出したデータを別シートにコピーしたいです

    エクセル2003を使用しています。 例えば、以下のような表があります。  ABC 1あ10 2い15 3あ20 4 A列が条件となり、たとえば「あ」のデータだけ抽出して、そのデータを別シートにコピーします。 同じく「い」だけを抽出して、また別のシートにコピーします。 いままでは、オートフィルタで抽出して自分でコピーをして貼り付けしていましたが、日々データが次の行に追加になるので、毎回オートフィルタしてコピーするのは大変です。 関数か、マクロかVBAを使ってする方法はありますでしょうか。 できれば日々追加になるデータのみをすでにある別シートの前日までのデータの下に追加できるようになればいいと思うのですが。 知識が乏しくできません・・・ よろしくお願いいたします。

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

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

  • 抽出の方法

    このカテゴリーでいいのかわかりませんが初めてなのでどうかよろしくお願いします。 エクセルで表を作りました。 シート1の A1~40まで B1~40 C1~42まで それぞれに公式を入力しています。 シート2へ A1~40 B1~40 C1~40 の数字(値)が入っているものだけを抽出したいのですが オートフィルターで抽出すると 空欄(公式)もしくは0が入っているセルまで入ってきます。 これを解消する方法はないでしょうか。 ジャンプ機能でやっても同じように空欄と公式がシート2に 入ってきます。どこかで間違えているのでしょうか。 大変困っています。 抽出先シート2で その空欄(公式)や0を消すという方法が あればそれでもかまいません。 余分な行を作りたくないのでマクロや関数などでその空欄を簡単に 消すことができればいいのですが。

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

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

専門家に質問してみよう