• ベストアンサー

エクセルでデータ抽出

nihonjinnの回答

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.3

作業列を作ってしまいましょう。 データが二行目から始まっているとするとE2に =IF(B2="食費",ROW()-1,"") と入力し,下にコピーします。 次にF2に1,2,3と数を並べてG2列に =IF(ISERROR(SMALL(E:E,F2))),"",OFFSET(A1,SMALL(E:E,F2),0)) これで日付を抽出できます。 まずE列で上から何番目に一致するデータがあるかを抽出し、 SMALL(E:E,F2) でE列の中からF2番目に小さい数を指定します。 OFFSET($A$1,SMALL(E:E,F2),0) でセルA1から「SMALL(E:E,F2)」行下で「0」列右側のセルを指定できます。科目、収入を抽出するなら「1」列右側,「2列」右側と指定してやればいいです。 IF(ISERROR(SMALL(E:E,F2))) としているのはエラー対策です。

royroy
質問者

補足

nihonjinnさん、こんにちは。 お教えいただいた、 =IF(ISERROR(SMALL(E:E,F2))),"",OFFSET(A1,SMALL(E:E,F2),0))は SMALL(E:E,F2)))の最後のカッコが1つ多かったですが うまくいきました。 ただ私の場合、シート2に食費を抽出したいので、 シート2に上記式を各行にはりつけていくことに なると、かなり手間がかかりそうです。 実は、シート3には被服代、シート4には雑費 シート5には光熱費などのように複数シートに科目を分けて抽出したいと思っています。 それを、シート1のボタンを1回押すだけで出来るよう にする方法はないでしょうか よろしくおねがいします。

関連するQ&A

  • エクセルでデータ抽出するには?

    まったくのエクセル初心者です。 エクセルで、シート1のデータの特定科目を抽出してシート2にコピーしたいのです。 シート1のデータは 5/1 消耗品    2500 5/3 水道光熱費  8000 5/5 消耗品     700 5/7 消耗品    1200 この中から消耗品と記入されている行をシート2に抽出したいのです。 マクロは全然わかりません。。簡単にできる方法は無いでしょうか?よろしくお願いします。

  • VBAで特定の条件に合致しているデータを抽出する方法

    家計簿シート○月.xlsで Sheet1には 列A:収入、列B:支出、列C:(支出/収入)率(%) で、行にはそれぞれの値が入力されています。 具体的には   A   B   C 2 収入 支出  率 3 1000 950  95% 4 500  250  50% 5 2000 4000 200%   :  :  :   ここで、 1:ボタンを押すと    ↓ 2:読み込むファイルを聞いて、ここで   家計簿シート○月.xlsを読み込んで(開いて)    ↓ 3:Sheet1の列Cの値が90%以上の行だけを抜き出して (抽出して)    ↓ 3:それをSheet2に表示する   (2行目の収入、支出、率という文字列も入れて) というプログラムをVBAで組みたいのですが どう組めばいいのかアドバイスをお願いします。

  • データ抽出

    VBA初心者です。 エクセルで2枚のシートを練習用で作成しました。 画像上段がシート1で元データです。 下段が転記先の表で、シート2です。 シート2は、今はデータが参考に貼りつけてありますが 普段はマクロで作業後は消去して、空白にしています。 今したい処理が 元データをINPUTBOX関数を使って抽出し、 NO,購入日付、分類、感想、備考のデータを下段画像シート2のように 転記したいのです。 抽出条件のキーになるのは、主に「購入日付」と「分類」です。 どこかのセルに、日付を範囲指定で入力すれば、条件に当てはまる データをシート2に表示させたいです。 四半期ごとのデータを検索したいためです。 INPUTBOX関数でなくても、どこかの特定のセルに範囲指定する日付を入力 して、抽出してもかまわないです。 あと、分類は割と「飲料水」を抽出して、印刷する頻度が多いのですが 今後の参考に、全部の分類を抽出できるスタイルが望ましいです。 現在は、一行一行日付と分類を目視で確認しながら シート2にコピペ作業しているので 時間がかかります。 エクセルの機能でフィルタ等をしてみたのですが、 関数やVBAで素早くしたいのですが、なかなかコードが思いつきません。 お願いします。

  • VBAのデータ抽出(間引き)について

    VBAのデータ抽出(間引き)について 当方VBA初心者なのですが、 VBA(EXCEL2007)を使用してグラフ作成をしようと思っています。 元データの書式は以下の通りでデータ行は30秒間隔で 一カ月分(8万行)あります。 2010/08/01 01:00:34     1112.83 2010/08/01 01:01:04     1110.43 2010/08/01 01:01:34     1111.87 2010/08/01 01:02:04     1112.23 2010/08/01 01:02:34     1112.43 2010/08/01 01:03:04     1112.03 2010/08/01 01:03:34     1110.83 2010/08/01 01:04:04     1112.43 2010/08/01 01:04:34     1110.63 ・・・ データ量が多すぎるので間引きしようと思っています。 間引き(抽出)条件は以下の様に考えています。 10行毎(5分毎)に値の最大値の行を抽出して別シートへコピー。 VBAマクロで処理するにはどの様な コードで実現可能でしょうか? 教えて頂きたく。よろしくお願いします。

  • エクセル:同じものを複数抽出して別のシートに自動表示させる方法

    シート1 日付 番号 物件名 科目   摘要  収入 支出   10/1  1  A  雑費    電球代     100 10/2  3  B  郵送費      ~     200 10/3  2  C  振込手数料   ~     500 10/4  1  A  雑費      ~      100  ・   ・  ・ シート2         ↓  番号(物件番号):1  物件名:A 日付    科目    摘要    金額(支出のみ) 10/1    雑費    電球代   100 10/6    雑費           100 合計                  200     番号(物件番号):2  物件名:B 日付    科目    摘要    金額(支出のみ) 10/1    郵送代         100  ・  ・  ・ このようなデータを毎月作成し、別のシート1枚に物件番号・物件名(現在40で今後も増加予定)ごとにそれぞれ表を自動表示するように作成したいのですが、うまくできません。どなたかご存知の方教えてください。どうぞ宜しくお願いいたします。

  • EXCELでデータを抽出してコピペしたいです

    指定した日付より、それ以前の誕生日(指定日も含む)の人だけを抽出してコピペしたいのですが WORKBOOK1のSHEET1(名簿)のH列に生年月日(他の列にもデータあります) データは、1200件(行)あります。 WORKBOOK2のSHEET1(該当者)名簿と配列は同じです。 A1に指定の日付をいれます。 WORKBOOK1のSHEET1(名簿)より抽出したデータのペースト位置は、A3からです。 VBAで可能でしょうか?

  • エクセルVBA 日付で抽出、並び替え

    こういう場で初めて質問させていただきます。 どうぞよろしくお願いします。 エクセルVBAで日付(月毎)でデータを抽出し、並び替えを行いたいのですが, B列に日付が入りC~F列には帳簿の仕訳が入ります。 ここで B2 に日付が入って、C2~F2とC3~D3にデータが入った場合に オートフィルタをかけたら、3行目は日付の欄が空白なので うまく抽出できません。 なお、2行目と3行目は1つの仕訳なのでばらばらになるのも困ります。   仕訳は最低1行から最大で6行になります。 このように日付欄は1行だけど、その日付に対応する内容が数行に渡って入るような場合に日付から月毎にデータ抽出するには どのようなコードを書けばいいのでしょうか? A B    C      D     E    F  日付 借方科目 金額 貸方科目 金額  10/10 消耗品  300    現金   500        雑費   200   10/9   交際費  500    現金   500   10/8    雑費   200     現金   200 汚い表ですが、上記のような場合です。 10/10の分は2行で1つになりますので、このような場合です。 どうかよろしくご指導お願いします。 

  • excel データの抽出について

    仕事でexcelの表からデータを抽出して資料を作成したいと思っています。 ≪シート1≫表から≪シート2≫表へ「1が立っているデータのタイトル(あ~お)を抜き出したいのです。どなたか方法があれば教えてください。(できればVBA等を使わないで作りたいです。) ≪シート1≫     あ い う え お A  1    1 B     1 1   1 C         1 1 ≪シート2≫ A あ う B い う お C え お

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

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     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のデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

  • 《エクセル2000VBA》「コメント」を抽出することはできますか

    こんにちは、VBAを勉強中の者です。 任意のシート(20000行×30列くらいでデータが入っています)に入力されているコメントのみを別シートに抽出し、一列に一覧表示させたいです。 自分でも調べてみて、とりあえずコメントは操作可能ということはわかったのですが、 ・任意のシートの中身を行と列の二次元に検索していく方法(特定の行のみ検索するコードはあちこちで見受けられるのですが) ・拾ったコメントの内容を別シートに書き込むのを「高速で」行う方法(その都度書き込んでアクティブセルを移動させる…というのならわかるのですが、データの量が膨大なので、これだと途方もない時間がかかってしまいそうです) 以上の方法がわからないでいます。 また、抽出したコメントは、配列関数を使えば処理が早いのでしょうか。 となると、書き込む件数が何件発生するかわからない場合はどうするのだろうか、と行き詰まっています。 (さらに贅沢を言いますと、コメントが入っていたセル番号が隣の列に入っているといいな、という希望もありますが、これはあくまで第二希望です) VBA勉強中ですので、パーフェクトに動くコードでなくても構いません。断片的なヒントでも大歓迎です。 VBAに詳しい方、ご教示頂けますでしょうか。