• 締切済み

月を指定した売上一覧の作成方法

売上等管理表をエクセルで作成しています。 毎回の売上を日付毎・売り先毎に入力できるシート※1は作成したのですが、 別シートで指定した月分だけ売り先毎にまとまった一覧表※2を表示できるように したいのですが、どのようにすればよいか、判る方教えていただけませんか。 作成したいものの例 ※1 5/7 A会社 1,000円 5/8 B会社 2,000円 5/9 A会社 3,000円 … 6/3 C会社 1,500円 ※2 5月売上一覧 A会社 4,000円 B会社 2,000円

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.4

>ユーザーが例えばあるセルにその月(”5”月など)を入れると >自動的にその月の表が表示できるようなボタンを作るのはまた別の話かと思います。 >簡単に作れるものでしょうか? それは貴方のVBAの慣れの程度と意欲次第と思います。 なお、 どこかのセルに2019/5/1と埋めたときに その下のセルに翌月1日の日付を関数で求めるのは 容易と思います。 その2つのセルの値をVBAが拾うだけで 指定月の範囲をVBA側に与えることができます。 本物に近いシートレイアウトを説明してくれれば それにあったVBAをポストすることはできるだろうと思います。

commupla
質問者

お礼

返信遅くなって恐縮ですが、ご回答誠にありがとうございます。 「このユーザーに質問する」機能を使用して、実際使っているシートを画像添付させていただきますので、よろしければご回答いただければ幸いです。

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.3

他の方のコメントにありますように、 一般的には、pivotテーブルを使った集計で対応する課題と思います。 他方、 pivotテーブルでは利用者の事情にフィットしない場合は VBAを使うことになります。 サンプル画像とコードをポストしますので よかったら参考に挑戦してみてください。 なお、"#2019/6/1#"としているのは 日付部分に時刻部分が含まれている場合を想定し 6月1日午前0時未満という条件にするためです。 Option Explicit Sub Sample1()  Const FDate As String = "#2019/5/1#"  Const TDate As String = "#2019/6/1#"    Dim cn As Object  Dim rs As Object  Dim SQL As String  Dim shF As Worksheet  Dim shT As Worksheet    'シートを定義  Set shF = ThisWorkbook.Sheets("sheet1") '集計元シート  Set shT = ThisWorkbook.Sheets("sheet2") '集計先シート    'DBを定義、設定  Set cn = CreateObject("ADODB.Connection")  Set rs = CreateObject("ADODB.Recordset")  cn.Provider = "Microsoft.ACE.OLEDB.12.0"  cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"  cn.Open ThisWorkbook.FullName  'SQL文を組立  SQL = ""  SQL = SQL & "SELECT [会社],SUM([売上])"  SQL = SQL & "FROM [Sheet1$A1:Z10000]" & vbCrLf '集計元シート名と範囲  SQL = SQL & "WHERE " & vbCrLf  SQL = SQL & "( [日付] >= " & FDate & ") and " & vbCrLf  SQL = SQL & "( [日付] < " & TDate & ") " & vbCrLf  SQL = SQL & "GROUP BY [会社]" & vbCrLf  SQL = SQL & "ORDER BY [会社]" & vbCrLf     'SQLを実行  rs.Open SQL, cn  '結果セットを格納  shT.Cells.ClearContents '出力先シートの全領域をクリアー  shT.Cells(1, 1).CopyFromRecordset rs   '後処理  rs.Close  Set rs = Nothing  cn.Close  Set cn = Nothing   End Sub

commupla
質問者

お礼

ありがとうございます。 私自身エクセルはピボットテーブル位までしか扱わないので教えていただいたことは挑戦です。が、イメージはそれです。大変参考になります!

commupla
質問者

補足

因みに、会社と売上の集計だけでなく、その書式には入力したシートから引っ張ってきた備考欄などの他のセルも反映させるようなイメージです。 その月の分の表を表示させたいときに、ユーザーが例えばあるセルにその月(”5”月など)を入れると自動的にその月の表が表示できるようなボタンを作るのはまた別の話かと思います。簡単に作れるものでしょうか?

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

計数を会社ごとに合計してしまうが、ピボットテーブルで月でグループ化して 表を作ればしまい、のはなしなのだが。 https://hamachan.info/win7/Excel/pibot.html 「月単位に変更する」

commupla
質問者

お礼

ありがとうございます。 ピボットテーブルも考えたのですが、普段PCで作らない人が紙で作るのと同じような感覚で見せられるようなシートにしたいと思ってましたので、書式っぽくしたかったのです。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

初めに、売上日付列(仮に2行目がA2とします)に記載された日付を年月に変換するために、B2セルより下に以下の式を入れた新たな列を作り、ビボットテーブル゛でB列の年月ごとの集計を行ってみてください。 =DATE(YEAR(A2),MONTH(A2),1)

commupla
質問者

お礼

ありがとうございます。 ピボットテーブルも考えたのですが、普段PCで作らない人が紙で作るのと同じような感覚で見せられるようなシートにしたいと思ってましたので、書式っぽくしたかったのです。

関連するQ&A

  • エクセルで売り上げ表を作成したいのですが…

    エクセル98を使用しています。 月毎の売り上げ表を作成したいと思っています。 あるシート(以降、Aシート)にその月の売り上げ表を作成して、別のシート(以降、Bシート)に月毎の売り上げの履歴を残す事ができたら良いと思っています。 あらかじめ締め日を決めておき、その締め日が過ぎるとAシートの売り上げ表に記載されていた数字はクリアされると同時に、Bシートに売り上げの履歴を残すようにしたいです。 毎月設定しておいた日付けが過ぎると、シートに入力されていた数字を自動にクリアさせる方法はあるのでしょうか? また同じく、毎月設定しておいた日付けが過ぎると、その月毎の売り上げを別のシートに残すような作業はできますのでしょうか? 時間に合わせて、処理を行うといった感じになります。 時間に合わせて、入力されたデータをクリアにする。また別のシートに記録を残す良い方法がありましたら、アドバイスをお願い致します。

  • excelで売上日報を作りたい

    飲食店です。excelでSheet1に1日の売上や仕入を入力し、Sheet2に月の売上や仕入の一覧が出るようにしたいと思ってます。加えて、Sheet1は毎日上書きしても、それがちゃんとSheet2に反映されるようにしたいです。 Sheet1のA1に日付→Sheet2のA1に反映。Sheet1のB2に仕入合計→Sheet2のB2に反映。ここで保存。 翌日、Sheet1のA1に日付を入力したら、Sheet2のA2に自動入力、Sheet1のB2に仕入合計→Sheet2のB3に自動入力。上書き保存。 というようなことです。 Sheetを31日分作るということではなく、Sheet1とSheet2のみで作成したいと思ってます。 関数のみでの作成が不可能でしたら、マクロを使っての作成でも構いません。 説明が下手で申し訳ありませんが、宜しくお願い致します。

  • 在庫表と売り上げ表

      在庫表                      売り上げ 商品    入庫    出庫   残     日付け   売り先  商品名  台数   A     8      3     5    7月10日  K商店  A      3  B   10       4     6    7月10日  S商店  B      4  C    7             7 Aの商品を売り上げた時、在庫表のAの出庫の欄に自動的に入る様(シートを替えて)出来る方法は、ないですか?                                   

  • エクセルで請求書作成し、売上も管理したい

    今、エクセルで請求書を作成しています。この請求書から、日付、売上金額、売上内容などをもう1度入力して一覧にした売上表を作っていますが、これを請求書からの日付等のデータを利用して、再入力をしないで売上表ができないでしょうか教えてください。

  • エクセルVBAで売上帳作成

    エクセルVBAで売上帳を作成しているのですが、毎日の売上・入金を記載しているシートから、顧客別に売上シートを作りたいのです。 作成しているシートは    A    B     C    D   E   F    G      H 1 日付 顧客NO. 顧客名 品名 数量 単価 売上金額 入金金額 2 3 というように作っていて、これを元に顧客NO.を指定すると、該当する行のみを抜き出して、別のシートに転記されるというようにしたいのです。 どのような命令文を作ればよいのでしょうか?

  • エクセルのデーターベースより日付べつに別シートで一覧表を作成する

    一覧表Aより同一日付別に表を作成する方法を教えてください。 表A     JAN  品名    定価 発売日 123123123123 鉛筆A    ¥100  3/1 321321321321 鉛筆B    ¥100  3/5 456456456456 シャーペンA ¥150  3/1 654654654654 シャーペンB ¥150  3/5 456456456456 シャーペンA ¥150  3/1 987987987987 ボールペンB ¥200  3/5 の表より別シートで日付を指定して表Bを作成する。 表B       3/1  123123123123 鉛筆A    ¥100  456456456456 シャーペンA ¥150   456456456456 シャーペンA ¥150   表Bの日付を入力するだけで表Bができような関数の組合わせ教えてください。  

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

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

  • EXCELで全てのシートを参照した一覧表の作成方法

    色々な情報を入力したSheetが50枚あり、 あまり手間のかからない方法で、 この50枚の中で、ある特定のセルの情報だけを参照させて一覧にした表を作成したいと思っています。 具体的には、Sheet名が”一覧表”というシートを作成し、 この”一覧表”シートの B1 セルには Sheet1 の A1 セルの値を表示させ、 次いで、同”一覧表”シートの B2 セルには Sheet2 の A1 セルの値を、 次いで、同”一覧表”シートの B3 セルには Sheet3 の A1 セルの値を、                       ・                       ・                       ・ 最後に、同”一覧表”シートの B50 セルには Sheet50 の A1 セルの値を、 といった形で、一覧表を作成したいです。 ご教示いただけますでしょうか。 よろしくお願いいたします。

  • 【Excel2003】データ一覧から売上実績を抜き取りたい

    【Excel2003】データ一覧から売上実績を抜き取りたい 画像を添付いたします。 黄色い2つの一覧から青い表を作りたいのです。 黄色い表は、データベースから引っ張ってきたものを貼り付けたものです。 A列、I列の日付は標準であり文字列ではありません。 例えば、2010/4/20に「あ店」で売り上げたA用紙とB用紙の合計数を抜き出したいのです。 かならずしも毎日、用紙の売上があるとは限りません。 特にB用紙は売上が少なく1つも売れない日があります。 添付画像は都合により4店しか書きませんでしたが、実際は50店ほどあります。 SUMPRODUCTあたりで出来そうな気もしますがうまくいきません。 ご教授ください。

  • 複数のシートから一覧表を作成する方法

    次のことを実現させる方法を教えてください。 シート 「あ」「い」「う」があります。 ※例としてはシートを3つあげましたが、 このシートはどんどん数が増えていきます。 シート「あ」   A   B 1 鈴木 1976/1/1 シート「い」   A   B 1 佐藤 1977/1/1 シート「う」   A   B 1 山田 1978/1/1 そこから一覧表を作成したいのです。 その一覧表のシート名を「一覧表」とします。 シート「一覧表」(実現したいシート内容)   A    B   C 1 シート名 名前 生年月日 2 A     鈴木 1976/1/1 3 B     佐藤 1977/1/1 4 C     山田 1978/1/1 参照元のシートが固定されているなら   A    B   C 1 シート名 名前 生年月日 2 あ    あ!A1 あ!B1 3 い    い!A1 い!B1 4 う    う!A1 う!B1 と直接参照先を書けばいいのですが、 この方法では、シートが増えるたびに B列、C列にえ!A1 え!B1というように参照先を その都度書いていかなければいけません。 だから、一覧表で、シート名(A列)を入力ただけで、 自動的にそのシートに記載されている 名前と生年月日が反映されるようにしたいのです。 例えば今A3には「い」と記載されていますが、 これを「あ」と変更すると 以下のようにしたいのです。 B3のセルの中身は い!A1 → あ!A1 C3のセルの中身は い!B1 → あ!B1 一覧表のセルB列、C列にどのように記入すれば自動化できるでしょうか?

専門家に質問してみよう