指定した月の売上データを取り出す方法

このQ&Aのポイント
  • Excel2003のSheet1には、商品データと売上データがあります。売上データには日付が入っており、指定した月のデータを取り出したい場合、関数を使用することができます。
  • 売上データの項目は商品データと同じであり、売上日、商品名、数量などが含まれています。具体的には、A1に指定した月を入力すると、売上データの該当する月のデータが表示されます。
  • この処理はピボットテーブルやマクロでも行うことができますが、関数を使用することで簡単に実現できます。Excel関数の一つであるVLOOKUP関数を使用することで、指定した月のデータを取り出すことができます。
回答を見る
  • ベストアンサー

指定した月のデータを取り出したい

指定した月のデータを取り出したい Excel2003を使っています。Sheet1に2つの表があります。 1つの表は、商品データ、2つ目の表は、売上データです。 商品データには、番号,売上日,商品名,数量等が入っています。 売上日には、月ごとではなく、売り上げた日にちが入っています。 例えば、A1に月を入力すると、売上データに該当する月のデータを 表示できるようにしたいのです。 例えば、売上データには、5月分の日付や6月分の日付や7月分の日付が 入っています。 A1に、6月と入力すると、売上データの表の1行目から順次6月分のデータを 表示されるようにしたいのです。6月分のデータは、複数行あります。 A1に、6月と入力すると6月のデータをすべてを表示できるようにしたいのです。 売上データの項目は、商品データと同じ番号,売上日,商品名,数量等となっています。 ピボットテーブルや、マクロでやったほうがよいのかもしれないのですが、 あまり自信がないので、関数で出来ないものかと思っています。 関数なら、少しぐらいなら知っているので。頑張って勉強します。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

tom04さんの表を参考にさせていただいて、作業列案です。 ただし、売り上げデータの売上日は昇順に並んでいるとします A2セルに =COUNTIF(H2:H11,">="&DATE(2010,B1,1))-COUNTIF(H2:H11,">="&DATE(2010,B1+1,1)) 該当するデータ数を算出する A4セルに =IF(A2=0,"",IF(H2>=DATE(2010,B1,0),1,1+MATCH(DATE(2010,B1,0),H2:H11))) 表における何行目にあたるかを検索する A5セルに =IF(COUNT($A$4:A4)>=$A$2,"",A4+1) 下へオートフィル。該当個数に応じ+1 B4セルに =IF($A4="","",INDEX(G$2:G$11,$A4)) 右へ下へオートフィル。 オートフィルタオプションで2010/6/1 以上 AND 2010/6/30 以下でもいいような

kumi_33
質問者

お礼

ご連絡が遅くなりまして申し訳ございません。 見覚えのある関数がいくつもあり、関数初心者でも、理解出来ました。 勇気を出して、質問してよかったです。アドバイスありがとうございます。

その他の回答 (2)

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

長々と質問を書かなくても。良くある抜き出し問題で、抜き出し条件が月指定であるだけです。 私の過去回答したものは。Googleで「imogasi方式」で照会すれば出てきます。数も多いし、他の回答者の別の回答も載ってますので参考になるでしょう。#1のような回答パターンのも。 私の方法はわかりやすいように作業列を使います。 例データ Sheet1 A1:B11 A1は月の数を指定用セル 6 2010/5/1 a 2010/5/13 b 2010/5/25 c 2010/6/6 a 1 2010/6/18 d 2 2010/6/30 f 3 2010/7/12 w 2010/7/24 e 2010/8/5 a 2010/8/17 b C2に式 =IF(MONTH(A2)=$A$1,MAX($C$1:C1)+1,"")を入れて下方向に式を複写 結果上記C列 Sheet2に行って Sheet2のA2セルに =INDEX(Sheet1!$A$1:$B$11,MATCH(ROW()-1,Sheet1!$C$1:$C$11,0),COLUMN()) と入れて、右方向に式を複写 A2:B2の式を縦方向に式複写 結果 A列は日付書式にすること 2010/6/6 a 2010/6/18 d 2010/6/30 f #N/A #N/A #N/Aを出さないためにはIF関数でROW()-1がSheet1のC列のMAXを超えたときは、空白を返す 式を前部にかぶせると良い。 操作のフィルタ、VBAピヴォットなどでも出来る。 ーーー 参考 ピボットでは変則的なやり方だが 例データ 月列はMonth(B2)の関数でだしたもの 月 日付 氏名 属性 5 2010/5/1 a x 5 2010/5/13 b y 5 2010/5/25 c w 6 2010/6/6 a e 6 2010/6/18 d r 6 2010/6/30 f t 7 2010/7/12 w y 7 2010/7/24 e u 8 2010/8/5 a i 8 2010/8/17 b t レイアウトで 行ーー>月をD&D データーー>属性 データの個数 / 属性 一旦下記の表になる 月 合計 5 3 6 3 7 2 8 2 総計 10 この月のセルへ日付をD&D 合計が出てしまうので合計行の1つを選択して、右クリックー表示しない この付き日付のセルへ氏名をD&D 合計が出てしまうので右クリックー表示しない この氏名のセルへ属性をD&D 合計が出てしまうので右クリックー表示しない 其れで データの個数 / 属性 月 日付 氏名 属性 合計 5 2010/5/1 a x 1 2010/5/13 b y 1 2010/5/25 c w 1 6 2010/6/6 a e 1 2010/6/18 d r 1 2010/6/30 f t 1 7 2010/7/12 w y 1 2010/7/24 e u 1 8 2010/8/5 a i 1 2010/8/17 b t 1 総計 10 月の列の▼で5月以外のチェックをはずしたりすると(択ぶと)5月だけ(5月と6月だけ)など表示が出来る。

kumi_33
質問者

お礼

ご連絡が遅くなりまして申し訳ございません。 imogasi方式を調べて、勉強してみます。 アドバイスありがとうございました。

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

こんばんは! 外していたらごめんなさい。 元データの配置が判らないので勝手に↓の画像のような感じで表を作ってみました。 参照元データは F~I列の2行目以降に配置しています。(1行目は見出しです) そして、日付はシリアル値で入っているものとします。 A4セルに =IF($A$1="","",IF(SUMPRODUCT((MONTH($G$2:$G$1000)=$A$1)*($G$2:$G$1000<>""))<ROW(A1),"",INDEX(F$2:F$1000,SMALL(IF(MONTH($G$2:$G$1000)=$A$1,ROW($A$1:$A$999)),ROW(A1))))) これは配列数式になってしまいますので、この画面から数式をコピー&ペーストしただけではエラーになると思います。 貼り付け後、F2キーを押す、または貼り付けセルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 これを列方向と行方向にオートフィルでコピーすると画像のような感じになりますが、 日付列はシリアル値が表示されてしまいますので、オートフィルでコピー後にセルの表示形式を「日付」にしています。 これでA1セルに表示したい月の数値を入力すればそのデータが表示されるはずです。 尚、数式は元データの1000行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、長々と書きましたが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m

kumi_33
質問者

お礼

ご連絡が遅くなりまして申し訳ございません。 tom04さんがアドバイスしてくださったとおりの事が したかったのです。こういう計算式になる事を知りました。 それにしても、さっと長い計算式が考えられるtom04さんが すごいです。アドバイスありがとうございました。

関連するQ&A

  • 日付から特定の行のセル内データを取得したい。

    列に日付、行に時間を入力データの内容は商品の販売個数です。 要するに日付毎の時間別販売数を調べたいのですが、 列の日付の下に各品名を数項目並べております。 この様なデータを個人別のシートで入力しています。 行いたい事は、そのデータを別シートで日付毎に参照したいのです。 あるセルに18と入力すれば、18日分の売り上げデータを一枚のシートに表示させたいのです。 これが一商品だけの集計なら「HLOOKUP」関数で普通に参照できるのですが、列に日付と商品、行に時間を入れているためどの様に参照すればよいのか判りません。 =HLOOKUP(A1,'名前'!A3:AF20,6,0) コレではその日の一番左の列の商品データしか参照できませんでした。 日付を入力するだけで複数の商品を時間帯毎に参照出来るような上手いやり方はありませんでしょうか? 宜しくお願い致します。

  • 条件に合うデータを別のブックに書き出したい

    お世話になります。 エクセル2003で、数量を入力した「行」だけを別のブックに書き出したいのですが、機能や関数を教えてください。 (表1)    A     B     C    D 1 商品名  単価  数量  合計 2  い    100   4    400 3  ろ    500   2    1,000 4  は    200 5  に    150 6  ほ    330 7  へ    230   5    1,150     ・     ・    ・    ・     ・     ・    ・    ・ 17  た    180   2    360 と、17行、4列の表があります。この「数量」が入力された行だけ、 (表2)   A    B    C   D 1 数量 単価 合計 商品名 2  4   100  400   い 3  2   500  1,000  ろ 4  5   230  1,150  へ 5  2   180  360   た (表2)のように書き出したいのです。 (表1)から抽出される行数は、必ず4行以下です。 (表1)に数量を入力すると、(表2)が自動的に変わるのが好ましいです。 マクロやVBAは苦手なのでエクセルの機能や関数で教えていただければ幸いに存じます。 情報が足りなければ補足します。 宜しくお願いします。

  • EXCEL関数 一覧から週計データを導き出したい

    Sheet1に1売上商品1行のデータが年間通しで並んでいます。 Sheet2に1日1行の週計データを表示したのですが。 Sheet2の [B2]以下の列に入れる関数 Sheet2の [C2]以下の列に入れる関数 Sheet2の [D2]以下の列に入れる関数 Sheet2の [E2]以下の列に入れる関数 を教えてください。 ================ Sheet1 売上入力表 Sheet2 日別売上集計表 画像添付しています

  • 在庫表シートから、売れた商品の「整理番号」を含む行を削除したいのですが

    マクロで”在庫管理”をしようとしています。 ”在庫表”シートのI列の2行目(セル;I2)に「整理番号」のタイトル、データは3行目から下方向に4桁の数値で並べて200行程度あります。(行方向には、仕入日、商品名、仕入先、金額などのデータが入れてあります。) 「売上入力シート」に、売れた「整理番号」をセル:D3から下方向に数量分入力し、それを売上表に転記(ここは出来ました)後、在庫表から売れた「整理番号」を含む行を削除したいのですが、これの”マクロコード”ができず、悩んでおります。 ヒントでも教えていただければ、助かります。 マクロの勉強を始めて数ヶ月の初心者ですが、よろしくお願いします。

  • エクセルで最新データのみ表示させたい

    Excel2003を使用しています。 毎日データを入力している表があるのですが、それを月末に最新データのみの一覧表にしたいのです。 A      B     C     D     E      F     G   H 日付 店舗コード 店舗名 商品コード 商品名 数量 単価 金額 店舗名・商品名は別シートにコード一覧表があり、そこからVLOOKUPで表示させています。 日付・店舗ごとに小計行を入れています。 件数は3000近くあります。これを商品名ごとに最新のデータ行のみを表示した表にしたいのです。 フィルタオプションの重複データを無視するや集計などやってみましたがうまくいきません。 VBAは書くことは出来ませんが、簡単な修正は出来ると思います。 どういった方法がありますでしょうか? よろしくお願い致します。

  • データの個数のカウントについて

    お世話にってます。みなさんのお知恵を拝借させてください! 売上・入金を以下のような入力をエクセル2003で行っています。 A1 →                          J1 月  日付   番号  納入先  売上金額  税込金額  月  入金日  入金額  残金 7  7/20   0001           20,000     21,000    7  7/31 20,100   0 7  7/31   0002          10,000     10,500   8   8/9 10,500   0 8   8/1   0003             1,667     1,750 月~税込金額までは売上に関する項目、月~残金までは入金についての項目です。 月毎の売上(税込金額の)の残額と入金されていない分の件数を把握したいと考えていますが、どのような関数を組めばいいのか行き詰ってしまいました。 午前中まで考えていたのは…、 A1に"7"と入力されているデータで、G1に入力されているデータ(7でも8でも関係なく)を、COUNTAとかSUMIFなどで個数や合計を出そうとしてました。 ただ、当月に売上されたものが、当月に入金されるとは必ずしも限らないので、うまくいきませんでした。 逆に、A1に"7"と入力されているデータで、G1が空白のデータ(=入金されていないデータ)を拾って行こうかとも今考えていましたが…。 ↑の2つの考え方だと、関数がエライことになりそうな感じかしますよね。 もっと、スマートな方法何かよい方法があると思って投稿しました。 どうか、回答をよろしくおねがいします。

  • 指定した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

  • エクセル2003 こんなことってできますか?

     商品別で仕入日順に・仕入先・仕入数量・仕入単価を記入する表を作りました。  この表のデータを基に仕入先別の表を作りたいと思っています。  商品別の表は、A列のセルを5個ずつ連結し商品名を記入し、B列以降は仕入日・仕入先・仕入数量・仕入単価・仕入合計額を記入していくように作りました。  A1~A5を連結 商品名を記入 (A6以降も5個ずつ連結)  B列以降   1行目 日付   (直接入力)   2行目 仕入先名 (直接入力)   3行目 仕入数量 (直接入力)   4行目 仕入単価 (直接入力)   5行目 仕入合計額(=B3*B4)  上記の表に対して、仕入先別(A商店・B商店・・・)の表をそれぞれ作り、商品別の表の仕入先名に入力されたときに該当する仕入先別の表へ商品名や日付金額が自動でコピーされるようにしたいのです。 仕入先別の表は形も決めてないのですが、商品別のほうはすでに完成しています。 このような状況で使える関数とかその他の方法ってあるのでしょうか? もし、できない場合はここを変えればできるかもみたいな助言でも結構です。 よろしくお願いします。

  • <EXCEL>月別にデータ数をカウントする方法。

    以下の表があるとします。 A列   B列 2006/6/1     123  2006/5/1     345 2006/6/13     234     2006/7/24   523 2006/9/12   912 2006/4/3   145 2006/5/5   872 この表から、月毎に、データが何件入力されているかを関数でカウントしたいと思っています。データの内容はランダムで、特に番号などは決まっていません。 C列に4月は何件、5月は何件というように表示したいのですが、日は関係なく月ごとにカウントするにはどのようにすればよいでしょうか。

  • access2003 複数のフォームから入力したデータに通し番号を付けてストックしたい

    初心者の恥ずかしい質問かもしれないので申し訳ありませんが、自力で解決できないのでアドバイスをお願いします。 伝票入力画面を作っています。  ◆親)売上入力フォーム:売上管理番号/日付/取引先/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 伝票が数種類あるため、それぞれの伝票を画像として取り込んで複数の入力画面を作り、入力しやすくしようと思っています。 このとき、各フォームから入力したデータを、オートナンバーでひとつの売上入力/明細テーブルにストックしていくにはどうしたらよいでしょうか? よろしくお願いします。

専門家に質問してみよう