• ベストアンサー

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

エクセルで、   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のデータを抽出するようにしたいのですが、どうしたらいいでしょうか? よろしくお願いします。

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

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

例データA1:B5 日付 売上 11月21日 900 11月22日 2000 11月26日 1800 11月27日 1300 G1に 2007/11/23 H1  に =INDEX(A2:B5,MATCH(G1,A2:A5,1),2) 質問ではMATCH関数の第3引数が0です(普通0で使う場合が多い)が1、-1も使えます。 日付順であると言う仮定で使えます。 WEB記事「エクセル Match関数」で照会や解説書を見ること。 http://excel.onushi.com/function/match.htm他多数。 I1に =INDEX(A2:B5,MATCH(G1,A2:A5,1)+1,2) 1行下ということで+1している J1に =I1-H1 結果 11月23日 2000 1800 -200 これでどうでしょうか。

yellow-
質問者

お礼

ありがとうございます。 参考URLまで、助かります。 教えていただいた式を少し応用し、思うものが出来ました。

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の方法は如何でしょうか。 H2は、=IF(VLOOKUP($G2,$A:$A,1)=$G2,VLOOKUP($G2,$A:$B,2),INDEX($B:$B,MATCH(VLOOKUP($G2,$A:$A,1),$A:$A,0)+1)) I2は、=IF(VLOOKUP($G2,$D:$D,1)=$G2,VLOOKUP($G2,$D:$E,2),INDEX($E:$E,MATCH(VLOOKUP($G2,$D:$D,1),$D:$D,0)+1))

yellow-
質問者

お礼

ありがとうございます。 教えていただいた式で思うものができました。 ただ、この式を理解するのに手惑いました…(自分の頭の悪さが身にしみます。) なので次点にしましたが、追いつくように勉強します。

関連する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のデータ範囲のせい?で正常に抽出できません。 どのような関数にすればいいかどなたかご教授ください!

  • エクセル データ抽出

    よろしくお願いします。 セルA3:E13にこのようなデータが入っています。 G4:H4にデータを入力すると、G8:K12に自動的にデータを抽出したいのですがよい方法はありませんでしょうか。 セルG4:H4のデータを入力しなおすたびに、条件に合うデータをG8:K12に抽出したいです。 実際にはもっと膨大なデータが入り、増え続けます。 エクセルに弱いのでどなたかお力添えください。 よろしくお願いいたします。

  • データベースとデータの抽出について

    データベースとデータの抽出について エクセル2003で以下のような、表を作っています。 データは現在、A列に10000万件程度入っています。 4列目の購入日付データの年、月、日がそれぞれのセル(D2、E2、F2) に分割入力されています。 このデータベースから、氏名と購入日付を基準キー にして、顧客NOと購入日付(1つのセルに結合)、 購入商品を抽出し、シート2に転記していきたいです。 抽出方法は、シート2に以下のような形で検索  表示したいです。 (シート2) 氏名(B1に表示)→C1に入力 抽出開始年月日(D1に表示)→年はE1、月はG1、日はI1に入力  抽出終了年月日(D2に表示)→年はE2、月はG2、日はI2に入力 検索後、表示される顧客NOと購入日付、購入商品は 同じシート2の以下のセルに表示したいです。 顧客NO(L1に表示)→L2から下に表示 購入日付(M1に表示)→M2から下に表示 購入商品(N1に表示)→N2から下に表示 したいです。 日付が分割入力されているため、抽出がうまくできません。 氏名、または名字だけでうまく検索できるコードはあるでしょうか。 どうぞよろしくお願いします。

  • エクセルで日付毎の最大値・・を一覧表にしたい(再)

    先日ここで、下記の質問をさせてもらって下記のご回答いただいた者です。 ご回答では、全部のデータが対象でこれでも良いかと締め切ったのですがやはり8:00-20:00までのデータ・・・でないと作業時間外の温度となってしまうので意味がなくなることが分かりましたので再度 質問させていただきます。 <前回の質問> エクセルの表で添付の左側の表のような、2つの部屋の温湿度が30分毎に一覧表になったシートがあります。 A列に日付、C列に部屋No①の温度、D列に部屋No①の湿度、E列、F列には部屋No②の温度、湿度が入っています。 この表から各日付の8:00から20:00までの間(可変なら非常にありがたい)の最低温度と最高温度を、右の表のように別の一覧表に抜きたいのですが。。。。 <ご回答> G6: =INT(A5) H6: =INDEX($A:$A,MATCH($G6&I6,INDEX(INT($A$1:$A$8788)&C$1:C$8788,),0)) I6: =MINIFS(C:C,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) J6: =INDEX($A:$A,MATCH($G6&K6,INDEX(INT($A$1:$A$8788)&C$1:C$8788,),0)) K6: =MAXIFS(C:C,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) L6: =INDEX($A:$A,MATCH($G6&M6,INDEX(INT($A$1:$A$8788)&D$1:D$8788,),0)) M6: =MINIFS(D:D,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) N6: =INDEX($A:$A,MATCH($G6&O6,INDEX(INT($A$1:$A$8788)&D$1:D$8788,),0)) O6: =MAXIFS(D:D,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) P6: =INDEX($A:$A,MATCH($G6&Q6,INDEX(INT($A$1:$A$8788)&E$1:E$8788,),0)) Q6: =MINIFS(E:E,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) R6: =INDEX($A:$A,MATCH($G6&S6,INDEX(INT($A$1:$A$8788)&E$1:E$8788,),0)) S6: =MAXIFS(E:E,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) T6: =INDEX($A:$A,MATCH($G6&U6,INDEX(INT($A$1:$A$8788)&F$1:F$8788,),0)) U6: =MINIFS(F:F,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) V6: =INDEX($A:$A,MATCH($G6&W6,INDEX(INT($A$1:$A$8788)&F$1:F$8788,),0)) W6: =MAXIFS(F:F,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) G7: =G6+1 H6:W6 を7行目へコピペ。 G7:W7 を纏めて下へコピペ。 ============================== ご回答に従ってデータを処理し始めたのですが、やはり8:00~20:00までのデータでないと意味がないことが分かりました。

  • #N/A の消し方

    セルI11に =INDEX(形材!D:D,MATCH(B11&C11&D11,INDEX(形材!$E$1:$E$10000&形材!$F$1:$F$10000&形材!$G$1:$G$10000,),0))&"" 上記の関数だと、B、C、Dに何も入力しなくてもI11は空白なのですが、 違うシートのセルH7に =INDEX(部品!D:D,MATCH(B7,INDEX(部品!$E$1:$E$10000,),0))&"" を入れると、Bに何も入力しないとH7に#N/Aが表示されます。 #N/Aを表示させない方法はありますか

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

    エクセルの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列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • データの抽出について

    エクセルにてデータの抽出をしたいのですが、わからないので教えてください。 例えば、下の様なデータがあります。 回数   1回目   2回目   3回目   4回目 1000    あ      a      A      0 1001    い       b       B      1  1002    う       c       C      2 1003    え      d       D      3   1004    お      e       E      4  1005    か      f       F      5 別のシートに、 回数の1001と入力すると、3回目のBが抽出    1003と入力すると、3回目のDが抽出    1005と入力すると、3回目のFが抽出出来る様にしたいです わかりにくい文章ですいませんが、ご回答よろしくお願いします。 

  • 関数で2つの条件から抽出する表を作りたい。

    A1は手入力D4手入力、H2は=D2&C2 担当者と週で検索して抽出する式を教えて下さい。 上手く出来なくて1行しか抽出しないんです。  A   B  C      D   E   F  G   H 1担当者 沼田 週    1 2 番号 日付 週 担当 企業 名前 住所 検索用 3 1 7月1日 1 沼田 a 高橋 土浦 沼田1 4 2 7月2日 1 佐藤 a 山田 阿見 佐藤1 5 3 7月2日 1 沼田 r 沖田 水戸 沼田1 6 4 7月7日  1 沼田 c 斎藤 土浦 沼田1 7 5  7月9日 2 佐藤 h 鈴木 牛久 佐藤2 8 6 7月14日 3 佐藤 d 河合 土浦 佐藤3 9 7 7月15日 3 高橋 e 吉田 阿見 高橋3 10 8 7月20日 4 高橋 e 木田 水戸 高橋4 11 9 7月4日 1 沼田 g 飯田 牛久 沼田1 上記の表から1週目だったら、1週目の担当者のデータをシート2の表に抽出 週2だったら2週目の担当者データを抽出 A1・D1は手入力 A3は=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) シート2     A   B   C  D  E  F  G 1  担当 沼田 週 1 2  番号 日付  週  担当  企業  名前   住所 3  1  7月1日  1  沼田   a    会田   牛久 4  4  7月2日  1  沼田   r   沖田   水戸 5  6  7月7日  1  沼田   c   斎藤  土浦  6  9  7月4日  1  沼田   g   飯田  牛久 上記の様にシート2に表示したいんです。 細かく教えて下さい。何度やっても1行目のデータしか抽出しないんです。 A3=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) B3=IF($A3="","",IF(VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0)="","",VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0))) A4の2行目以降1になってしまって同じ物しか出ないんです。 Aの番号の抽出方法の式を教えて下さい。

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

    タイトルにあるとおり、あるデータをオートフィルで抽出した状態で、その抽出結果からデータをカウントしたいのです。 以下のような表があったとします。    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関数でいけるのですが、抽出した状態からだと私のスキルでは解決できません。 どなたか、ご存知の方ご教示よろしくお願いします^^;

  • 2つの条件からシート2に抽出

    シート1 A1は手入力D4手入力、H2は=D2&C2 担当者と週で検索して抽出する式を教えて下さい。何度もすみません。 上手く出来なくて1行しか抽出しないんです。 上記の表から1週目だったら、1週目の担当者のデータをシート2の表に抽出 週2だったら2週目の担当者データを抽出 A1・D1は手入力 A3は=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) 上記の様にシート2に表示したいんです。 細かく教えて下さい。何度やっても1行目のデータしか抽出しないんです。 A3=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) B3=IF($A3="","",IF(VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0)="","",VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0))) A4の2行目以降1になってしまって同じ物しか出ないんです。 Aの番号の抽出方法の式を教えて下さい。

専門家に質問してみよう