• ベストアンサー

Excelのデータ集計方法について

nishi6の回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

不特定のデータ数ですから、関数は使う気になりませんね。下記VBAを書いてみました。 ●データが入力されているシート="Sheet1"。請求書フォーマットのあるシート="Sheet2" とします。  Sheet1のE列に連番を振ります。ソートしたデータを元に戻すためです。  Sheet1のデータを商品名、売上日、伝票番号の優先キー順で並べます。(商品名は最優先です。後は自由)  Sheet2がどのような形か分かりませんので勝手に想定しました。     商品名   AAA04        売上日   伝票番号   請求額       2001/7/ 9   1021     61,600       2001/7/12   1020     46,700       2001/7/14   1027     12,200  のように想定し、    商品名の下のセルに範囲名:trsSyohin(上図のAAA04の場所)    売上日の下のセルに範囲名:trsData(上図の2001/7/ 9の場所)    Sheet1のA1(商品名という表題が入っている?)に範囲名:DataTop を付けます。 ●Sheet2にコントロールツールボックスからボタンを貼り付けます。  (表示→ツールバー→Visual Basic) ●ツール→マクロ→Visual Basic Editor でVBE画面に移り、Sheet2のコードウインドウに貼り付けます。 Private Sub CommandButton1_Click() DataTensou End Sub ●次は標準モジュールを挿入し(挿入→標準モジュール)貼り付け Public dataNum As Long 'データ個数 Public rgDt As Range 'データ基準セル Public rgTsyo, rgTdat As Range '商品転記セル、データ転記基準セル Public cot As Long 'カウンタ Public newSyohin As String '読み込んだ商品名 Public TensoNum As Long '転記した個数 Public endFlg As Boolean 'データ終了フラグ Public Sub DataTensou() Set rgDt = Range("DataTop") 'データ基準セル Set rgTsyo = Range("trsSyohin") '商品転記セル Set rgTdat = Range("trsData") 'データ転記基準セル ' With rgTdat '書き込み済みデータを消去 If TensoNum > 0 Then Range(.Cells(1, 1), .Cells(TensoNum, 3)).ClearContents End If End With ' dataNum = Worksheets("Sheet1").UsedRange.Rows.Count - 1 With rgDt TensoNum = 0 '転記した個数をクリア newSyohin = .Offset(cot + 1, 0) '今度転記する商品名 rgTsyo.Offset(0, 0) = newSyohin While newSyohin = .Offset(cot + 1, 0) And cot <= dataNum rgTdat.Offset(TensoNum, 0) = .Offset(cot + 1, 1) rgTdat.Offset(TensoNum, 1) = .Offset(cot + 1, 2) rgTdat.Offset(TensoNum, 2) = .Offset(cot + 1, 3) TensoNum = TensoNum + 1 cot = cot + 1 Wend End With ' If cot > dataNum Then MsgBox "終了しました" cot = 0: TensoNum = 0: endFlg = True Else 'どちらかの「'」をはずすとプレビューか印刷を実行 'ActiveSheet.PrintPreview 'プレビュー(印刷範囲を設定すること) 'ActiveSheet.PrintOut '印刷(印刷範囲を設定すること) End If End Sub Public Sub PrintALL() '全印刷 While endFlg = False DataTensou Wend endFlg = False End Sub ボタンを押す毎に商品名単位で転記します。終われば、最初から繰り返せます。 自動印刷やボタン1発で全印刷とか・・・いろいろできそうです。(参考に書きました) いつも長くなってしまう・・・デハ。

milmelon
質問者

お礼

補足を書いた後、じっくりコードを眺めていましたら、 初めにデータをソート(並び替え)しておけばいいんですよね? と、気が付きました。 nishi6さんも「ソートしたデータを元に戻すためです。」と 書かれているのに、慌てていて申し訳ございませんでした。 自分でもがんばって少しやってみます。 もし、意図されている事が違っていたり、いい案があるようでしたら また、アドバイス下さい。よろしくお願い致します。

milmelon
質問者

補足

nishi6さんお忙しい中回答ありがとうございます。 つたない説明文章からよくぞここまで意図をくんでいただけて 本当にありがとうございました。まさしく、自動ですべての商品に関しての ソート、転記、印刷をしたかったのでした。(参考のコードが役にたちます。) しかし・・。 元のデータが入力されているSheet1は  商品名  売上日  伝票番号 請求金額 連番   AAA  2001/6/1  0001   1000    1   BBB  2001/6/2  0002   2000    2   CCC  2001/6/3  0003   3000    3   AAA  2001/6/4  0004   1000    4   AAA  2001/6/5  0005   1000    5   CCC  2001/6/6  0006   3000    6 にしましたが、上手くソートができなくて(?)Sheet2には 商品名   AAA        売上日   伝票番号   請求額       2001/6/ 1   0001     1000 としかでてきません。 連続している場合には 商品名   AAA        売上日   伝票番号   請求額       2001/6/ 4   0004     1000       2001/6/ 5   0005     1000 とされるのですが何か原因はあるのでしょうか。 VBAに関しては初心者もいいところなので、記述を見てもなんとなくしかわかりません。 それとも、作成の仕方が悪いのでしょうか。 丸投げ状態で大変申し訳ございませんがもしよろしければアドバイスをよろしくお願い致します。

関連するQ&A

  • エクセルでの集計について

    よろしくお願いします。 今現在とあるソフトに売上データを入力していて、それをエクセルに打ち出しています。 日付、伝票番号、店名、商品名、金額と出るのですが、これを伝票番号別に売上金額の合計を出しています。(1伝票あたり2~3品の売り上げがあります) ただ、伝票番号のみの集計は出せるのですが、それだと日付や伝票番号が記載されません。 伝票番号や日付、店名なども出せて、伝票番号毎の合計金額が出せるような式があるのでしょうか? 今現在は伝票番号毎に集計をかけて、合計が出た列を別シートに日付や伝票番号をコピーして張り付けています。 エクセル初心者なので、 すごく手間で、もし簡単に出来る方法があれば教えてください。 よろしくお願いします。。。

  • エクセルで集計

    小さな会社で経理してます。 今だに顧客ごとの毎月の売上&入金の集計をするために 手書きの伝票から売上台帳の各顧客ごとのページに手書きで転記し、 電卓で月ごとの集計しているのですが、 それをexcel(2007)で集計したいのです。知恵をお貸し下さい。 私の入社前は全てがアナログの大変な世界でしたが、 現在は私の精一杯の知識を駆使して、 請求書だけは手書き&電卓計算しなくて発行できるようにしました。 方法は、手書きの伝票のデータ1か月分をexcelに入力し、 伝票no. / 日付 / 顧客no. / 顧客名 / 請求額 ------------------------------------------ 50123 / 5/03 / 1234 / ABC商店 / 25000   顧客名は別BOOKのリストの顧客NO.からLOOKUP関数で自動で表示されるようにしてます。 別シートにコピーして顧客ごとにソート&小計して消費税と合計請求額も計算式で求め、 それをwordで作った請求書に差し込み印刷するという方法です。 つまり売上集計のベースとなるデータの一部 (一部、というのは、現金・振込など入金に関しては今のところデータ化してないので) はもうexcelに既にあるのです! なのにそこから顧客ごとの毎月の集計をするいい方法が思い付きません。 自動化したい売上台帳は現在顧客ごとに以下のように手書きしてます。 ABC商店 ======== 日付  伝票NO.     / 売上金額 / 消費税 / 受入金額 / 値引額 / 差引残高 5/01  (前月残)   /..................../..................../..................../..................../ 31,500    5/03   50123    / 10,000 /..................../..................../..................../ 5/10   ○○銀行  /..................../..................../ 30765 /..................../ 5/10  振込手数料 /..................../..................../..................../  735 / 5/18  50333     / 40,000 /..................../..................../..................../ 5/20  消費税    /..................../  2,500 /..................../..................../        5/24   50123    /  20,000 /..................../..................../..................../ -------------------------------------------------------------------------- 5月計         / 70,000 /  2,500 / 30,765 /  735  / 72,500 小さな会社とはいえ、年間に取引する顧客数は150から200社にのぼり、 売上台帳は1年終わると幅4~5センチのファイルがパンパンになります。 しかも、よく社員が過去の分を参照するため見る必要があるので、 簡単に該当部分が画面上に表示できるほうが助かります。 関数の知識はある程度ありますが、 VBAに関しては本を読んでなんとなくどんなものか知ってるぐらいで、 実際に使ったことはありませんが、必要なら頑張って勉強するつもりです。 いいアイデアや具体的な方法、また参考になる本・サイトなど 役に立ちそうな事ならなんでもいいです。どうか教えて下さい。 できるところまで自力でやってみたいのです(経理ソフトに頼らず) よろしくお願いします。 なお、表示幅の狭いOK Waveでは表が崩れてわかりにくいかもしれません。 その場合は 教えてGooのサイトから見て下さい。

  • EXCELでこんな集計はどうするのでしょうか

    商品管理の表で以下のようになっています。 A1   B1    C1     D1    E1 担当者 分類番号 商品コード 整理番号 以下各月毎の売り上げ そしてこの表は1500行程度あり、B列、C列でソートしています。 この表をB列の分類番号毎、C列の商品コード毎で各月の売上合計を上記の表のシートとは別のシートに集計したいのですが、どのようにしたらよいのでしょうか。シートをコピーして集計するのはできるのですが、そうしたら容量が(サイズが)大きくなりすぎるため、できれば避けたいと思っています。

  • Excelピボットでのカウント方法

    Excelピボットで1万件ほどのデータを集計しています。 部門、商品名、メーカー名、売上額、売上数量などがデータベースにあります。 基本的には売上等を部門ごとに集計するだけなのですが、「メーカー名」は重複するデータを1件としてメーカー数をカウントしたいのですが、ピポット上での方法がわかりません。 どなたかご教授いただけるととても助かります。

  • エクセルの集計方法

    下のようなデーターがあるときのエクセルのうまい集計方法があれば教えてください。 1)データーは4列2000行くらいあります。 2)A列には商品名、B列には売上件数、C列には売上金額、D列には利益が各々記入されています。 3)毎月データーが追加されていくのですが、同じ商品名のデーターもかなり追加されます。 4)同じ商品名のデーターはB列・C列・D列を合計値に置き換えていきたいのです。 5)たとえばA列の商品名・カメラにはB・C・D列とも1月から8月の合計である、12件・12万円・2万円がすでに入力されています。 ここに9月分のデーターとして3件・5万円・1万円が追加されたとき、商品名カメラの行は15件・17万円・3万円に置き換えたいのです。 現在手作業でやっていますが、段々商品が増えてきており、手間がかかるようになっています。 うまい方法があればご教示ください。

  • エクセルで既存の売上データに部門名を付け加えたい

    csvで書き出した売上データがあります。 エクセルで読み込みシート名を「売上リスト」としました。 列項目は、A列:商品番号、B列:商品名、C列:商品点数、D列:商品単価、E列:合計銀額です。 この売上リストに、F列:商品部門を後から付け加えたいと考えています。 別のシートに商品番号と商品部門が同じ行にある参照用データ「商品リスト」を用意しました。 商品リストも売上データ同様csvで書き出したもので、商品部門列が名称ではなく部門ID(数字)になっています。 そこで、A列:部門ID、B列:部門名の「部門リスト」を用意しました。 シート1:売上リスト(約400行) シート2:商品リスト(約600行) シート3:部門リスト(10行) 売上リストの各行に関連する部門名を付け加えるために、いくつか手順を踏まなくてはと推測できますが、どうしていいのかわかりません。 1.売上リストの商品番号を参照し商品リストの商品番号と一致する行の部門IDを呼び出す。 2.呼び出した部門IDを関連する名称に変更する。 のような感じになるのでしょうか。 初歩的な質問かもしれませんが、具体的にどうしたらいいのかさっぱりわかりません。 よろしくお願いします。

  • エクセルデータ集計

    エクセルデータ集計の仕方がわからないので教えて下さい。 A列・・・月(○月) B列・・・月日(2012/12/17) C列・・・数量 D列・・・単位(kg・袋…など) E列・・・商品名 F列・・・購入金額(C列×単価) G列・・・単価 商品は100品ぐらいあり、入力データは2000件ぐらいあります。 一覧を商品名別で月ごとの平均単価を出したいのですが、ピボットテーブルで試してみてもなかなかうまくいきません。 ピボットテーブルじゃなくても構いません。 どなたかお分かりになるかたよろしくお願いします。

  • エクセル 年間ランキングの集計方法

    エクセルで1月から12月の人気商品ランキングを集計したいと思っています。 月ごとに計12枚のシートがあって、その中に商品名と販売個数が300列ほど入っています。 エクセルを使って1年分の商品売上順に並べたいのですがどのようにすればよいでしょうか。

  • Excel?VBA?

    Excelはかなりつかっているのですが、 VBAは初心者です。 売上伝票をほかのソフトからCSVに変換してデータを取り込んでいます。 A伝票番号,B売上日,C商品コード,D商品名 のような形式です。 A伝票番号, B日付 ,C商品コード,D商品名 1,5/1,111,aaa 1,5/1,112,bbb 1,5/1,113,ccc 1,5/1,114,ddd 1,5/1,115,コメント 2,5/2,116,eee 2,5/2,117,fff 2,5/2,115,コメント になります。 コード115の商品名を新規のE列に表示することは可能でしょうか。 条件は、日付が一致する欄に同じコメントが入ります。 以下のような形です。 A伝票番号, B日付 ,C商品コード,D商品名,Eコメント 1,5/1,111,aaa.5/1のコメント 1,5/1,112,bbb.5/1のコメント 1,5/1,113,ccc.5/1のコメント 1,5/1,114,ddd.5/1のコメント 1,5/1,115,コメント.5/1のコメント 2,5/2,116,eee.5/2のコメント 2,5/2,117,fff.5/2のコメント 2,5/2,115,コメント.5/2のコメント となればいいなという形です。 もし、教えていただければ幸いです。 よろしくお願いいたします。

  • エクセルのデータ検索&抽出作成について

    Excelの別シートでの検索と抽出について ExcelファイルでSheet1~5まで部署別の発注データで項目は下記の通りA列~G列まですべて同じになっているものがあります。 A列 B列 C列 D列 E列 F列 G列 注文番号 商品名 納品日 納品先 発注額 消費税 合計額 別シート(Sheet6)に「商品名」や「納品先」で検索する項目を作成し、その結果を表示できるようにしたいのですが何か良い方法はないでしょうか? マクロ・VBAでの作成方法もあればお願いします。 Excelのバージョンは2010です。 並べ替えとフィルター → 詳細設定 → フィルタオプションの設定 で試してみましたが、検索する商品名(納品場所)を変更してしまうと抽出されませんでした。 宜しくお願いします。