VBAでデータ処理。データを処理し合計をするには

このQ&Aのポイント
  • VBAを使用してデータを処理する方法を知りたいです。データは外注、外注個別工事別、顧客、月に分けられています。最終的には月別の合計を求めたいです。
  • データ処理についてVBAを用いた方法を教えてください。データは外注、外注個別工事別、顧客、月に分けられており、月別の合計を出したいです。
  • VBAを使ってデータ処理を行いたいです。データは外注、外注個別工事別、顧客、月に分けられており、最終的には月別の合計を出したいです。どのように処理すれば良いでしょうか?
回答を見る
  • ベストアンサー

VBAでデータ処理。データを処理し合計をするには

データは外注、外注個別工事別、顧客、月、に分けてあります。最終的に月別の合計を出すのですがその月別のデータは以下の通りに集計します。          │ 横 顧客別 --------------- │---------- 縦 外注工事別 │ 合計   │ データには番号が振ってあります。 例 1 外注A 顧客 月 外注工事別 金額 というのがデータの種類です。ここで言う工事別というのは外注Aに対して工事が2種類以上ある場合があるためです。 VBAでしか出来ないと言われたのですが、私はマクロ記録程度しかできませんので、どなたか教えていただけると嬉しいです。

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

  • ベストアンサー
noname#245936
noname#245936
回答No.5

No.1です。 参考になられたようで、よかったですね。 私の提示した市販ソフト例はあくまでも一例です。 ほかにもいろいろあると思いますので、検索サイトで業界用語でも 入れて探してみてください。 然るに。 業務と言いますのは、自分がOnly Oneの業界でもない限りは、 かならず「他の誰かも既にやっています」。 ということは、答えはすぐそこに転がっているんですね。 業務用パッケージの購入は、筆まめや何やのソフトのように、 一時的な負担は大きく見えますが、Windowsがバージョンが幾つに 上がっても、メーカさえ生き残ればソフトは常に互換性ありで バージョンアップし続けて行きます。 昔のシステムは全部手組でしたが。 今は、いろいろ購入しての組み合わせが一番です。 例えば夕食を作る時も、冷凍食品や、お惣菜を使ったほうが スピーディで、味は…無難に。しかし速いです。 ソフトにもそれが言えます。 ま、ただし。 一方ではお悩みになり、「Excelでどないしようか?」ウンウン 考えることは無駄ではありません。 全くソフトを知らないよりは、ご自身で努力なされて勉強されますと。 ソフトの仕組み、苦労が判り、ご自身の業務の複雑さが、改善すべき 非効率さが、難しい=お金がかかるという構図が見えるように なります。 実際に、我々もお客様を相手していて、ITを全く知らないお客様より 自身で努力されたお客様のほうが、低コストでとてもうまくいく 傾向にあります。 そういうお客様であればある程、お客様自身が、いろいろ試行錯誤 した利用の仕方をされているケースもあり。 我々自身が作った自社ソフトを「こんな使い方もあるのか!?」と、 逆に教えられ、大変勉強になったりしています。 いろいろ苦労はなされると思いますが。 今回の一件も無駄ではないかと。 今後とも頑張ってくださいね。 以上、ありがとうございました。

sakura3j
質問者

お礼

そうですね。今回、データの処理で苦労したことはいずれは自分の物になっていくと思えば、苦労という言葉ではなく経験という言葉で自分の中に残ってくれそうです。 しかし、そう気づかせてくださったのはyama-taku様のご丁寧な教えのお陰です。本当にありがとうございました。 おっしゃるとおり、今の会社の中でもエクセルですら満足に使えない人が多く、努力をすることすらせず、でもITを使って楽をしたいという考えの人がほとんどです。なので私に頼んだわけですが、アクセスなど触ることすらしようとしません。 なので会社の人たちにyama-taku様のこれらのコメントを是非読んでもらいたいぐらいです(笑) 再度、色々とありがとうございました。 yama-taku様も、益々のご活躍を!!!! 又、何かありましたらよろしくお願いいたします。

その他の回答 (4)

noname#245936
noname#245936
回答No.4

No.1 です。 さて。 マクロでシート間データ移動?という件ですが。 これはデータベースという意味ではあまりいい考えでは ないように思います。 Excelで例えますと。 「数式」のコピー&ペーストは構いませんが、「実数」の コピーペーストは同じ要素のデータを二重で取り扱って しまい、エラーの元になってしまうからです。 例えばあなたの例ですと。 顧客単位、月別等で集計を行った後で、再度元のベースの データを修正…特に客など親要素のデータが増えたり減っ たりしますと、あなたのお考えのExcel マクロはとたんに 大きな修正が必要になると思います。 これは何故かといいますと。 何度も言いますように、Excelでは…ご存じのとおり、所詮 セル参照PULL型の表ソフトであるという点で欠点があり。 セルに式を埋め込むとデータは引張ってこれますが、 データが増えたのに応じて自動で参照範囲を変えたり 何もないセルに自動で式を埋め込む力は持っていないからです。 そこで。 「じゃ、データの無いセルに無理やり元情報のデータ増減に  応じて、セル操作を自動化させましょうや」というのが Excelマクロ…なんですけど。 ベタベタでプログラムを書きますと結構面倒ですよね。 あと作ってみるとわかりますが、速度が遅いんですよね。 …この時にですね。 ここまで考えた上でAccessを見ますとですね。 確かに初心者には融通利かなく面倒で、入門はしにくいも のの、Excelマクロよりははるかに「データ操作だけは簡単」 になっちゃうんです。 たとえば、貴方のおっしゃるデータべース表など。 SQL言語というもので一瞬で取得できるんですが。 たとえば、貴方のおっしゃるデータベース列が 行番号・外注先・年・月・日・工事別・金額とした時にですね。 Access等でデータをPickUpする場合は、 「SELECT 外注先,SUM(金額) FROM 外注管理表  GROUP BY 外注先 ORDER BY 外注先」 という一言で、外注先ごとの全集計結果が出せますし。 「SELECT 外注先,年,SUM(金額) FROM 外注管理表  GROUP BY 外注先,年 ORDER BY 外注先」 という一言で、外注先・年ごとの全集計結果が出せます。 客が増えても、データが100万件になっても処理が可能です。 マクロをゴリゴリ書いて変更しなくていいわけです。 ただし、SQL文法は数学の「集合」のような表現の言語で データを自在に操れますが、ちょっとむずがしいです。 ここがソフトの損益分岐点と言いますか。 ExcelとAccessのはざまなんですね。 さて。 ここからが重要なのでよく考えていただきたいのですが。 あなたが求めている表作成業務が、サクッとできますと どうお得になりますか? ご自身がパソコンにご興味があり勉強したい用途でしたら Excelマクロゴリゴリ書く手間、コストをかけても構いません。 Accessにもどんどんチャレンジいただきたいと思います。 ただ、「表を作る道具を作る」のに時間がかかるわけで。 「表を作る時間 = 作っている人のコスト」と考えられますよね? ではその表が、自動で速くできるといくら儲かりますか? 表を作る人件費コストは幾らですか? …と考えたとき。 Excelでマクロゴリゴリ、AccessやFileMakerなど簡易データ べースを利用もありますが。 適当な市販ソフトを利用も大きなメリットがあると思います。 たとえは、貴方の求めている業務に合うかどうかわかりませんが。 『建築みつも郎9』など商用見積ソフト体験版をお試し いただいていらっしゃいますでしょうか? http://www.kobec.co.jp/kenchiku/index.html 今はソフトは手組でゴリゴリ作る時代ではなく。 既存のものを組み合わせるのがキモになります。 6万円は見た目高いですが、人件費対比はわずか数日分です。 多く語りましたが。 私自身、IT屋で利用者に常にソフト変更を勧め。 手組で変更を重ねてお金をいただいておりますが。 はたして本当にこれが正しいのか疑問に思っていまして。 貴方の、正しい判断でいろいろお試しください。 以上。コメントまで。

sakura3j
質問者

お礼

ありがとうございます。大変参考になりました。確かに、エクセルで色々やっているだけで数日を費やしていまして、教えていただいたソフトを利用する方がはるかに効率的であると思いました。 それにここの所、数人が入社しましたが自称エクセル、アクセスが使える、というだけで作る事に関しては全くの素人です。なので、私が全て作る必要がありますし、データ入力を含めた全ての作業を一人ですることは困難です。一度上司にソフトのことなど含めて相談をしてみようと思います。 アクセスについても詳しい説明のお陰で大分理解ができましたし、簡単な顧客データなどはアクセスの練習のために作ってみようと思います。それから、エクセルのマクロ部分は手入力で対応してデータに対応、という形でソフト導入が決まるまで頑張ってみます。 本当に色々ありがとうございました。ご丁寧かつ親切な回答で本当に助かりました。 又、何かありましたらよろしくお願いいたします。

noname#245936
noname#245936
回答No.3

No.1です。 余談ですが。 まず。 Excelで並べ替えは簡単なはずですので面倒ではないように思います。 お持ちのExcelバージョンによりますが「並び替え」機能等を上手く 活用してみてください。 また、他方で。 アクセス導入の話題ですが。 Excel等のソフトはデータベースに比べ優れている部分もあります。 例えば、列を柔軟に増やせたり、A4用紙にきっちりはまる帳票を 作成したり、単発利用で更新頻度がさほどない個人用途のものに 関しては、データベースより利便性が勝ります。 データベースソフトのメリットは、定形繰り返し業務のルール化と 同時多人数利用です。(注:Accessだけに関しては、あまり大人数 でのデータ同時更新には向きません) 銀行ATMのように、固定的な定型画面から、固定的なデータを たくさん入れると、事前に仕込んである固定的な出力を得られる という流れを持つ仕組みです。 ただそれが逆に、最初から「入力→蓄積→抽出→帳票やExcel」と いう流れを最初から完全に作ってしまうので、後で柔軟に列を増や したりすることは変更が多く手間がとてもかかります。 例えば、皆様が銀行でATMで機能を利用していますが、あれが裏で 20種類の表を自動作成しているデータベースシステムの場合、 新規に「外貨預金」の機能を付けると修正箇所は膨大になります。 が、これがExcelの場合は、列をふやすだけです。 このように、用途により向き不向きがありますので、検討されてから 利用されるといいと思います。 ちなみに、もし、私が御社システムを見直す場合は、まず市販の 同業界のソフトを試してみることから始めると思います。 あまり知られていませんが、求める機能をすでに実装している ソフトは意外に安価で販売されています。 最初から全部の機能を求めずに、あまり手を入れず「そこそこ使える」 ソフトを探し出すことは低コストでありますし、有効なやり方であると 思います。

sakura3j
質問者

お礼

丁寧な解説を大変ありがとうございました。アクセスは利用したことがないので利点が良くわかりませんでしたのでとても助かりました。 市販のソフトの件ですが、全く視野に入っておりませんでしたので一度検討してみたいと思います。 内容を再度検討してみたところ、やはりデータのためのシートを増やす必要があり、データが自動で指定のシートに移動する、というマクロを作成すれば仕事がかなり回っていくという事がわかりました。 機能を後からつける可能性が高いため教えていただいたようにアクセス導入よりエクセルで流れを作ってから健闘した方がよさそうです。 残る課題はマクロでシート移動、という点だけとなりますが、これは全く方法が判らないためご教授願えたら幸いです。 新しく質問をつけたほうがいいかと思いましたが、一応マクロ作業工程として データの 1 外注A 顧客 月 外注工事別 金額 は、見積もりとなりますのでそれを月別のデータ用シートと、顧客用データ用シートにマクロで移動、という作業です。 これは、顧客別で見積もりを再計算するために必要なシートです。 月別シートは毎月の支払い計算に必要なシートです。 この二つのシートがクリアできれば、あとはVLOOKUPで指定の用紙に転記する事が可能です。

noname#245936
noname#245936
回答No.2

No.1です。 基本的に、列数が変わらず、行数が動的に伸びるものは データベースの領域になりまして。 ExcelのようなPULL型の関数埋め込み型ソフトでは、どうしても 都度手を入れる必要が出ちゃいます。 …が、たしか。 Excelでは条件付き合計関数「SumIF」があったような気がします。 SumIF(検索列範囲、条件、合計範囲)あたりの構文だったと 思います。 これでいかがでしょうか?

参考URL:
http://kokoro.kir.jp/excel/sumif.html
sakura3j
質問者

お礼

<No.1です。 <基本的に、列数が変わらず、行数が動的に伸びるものは <データベースの領域になりまして。 なるほど、そういう考え方をするのですね。アクセス導入の話がありましたが、そちらも検討した方がよさそうです。 <Excelでは条件付き合計関数「SumIF」があったような気がします。 これも試してみたのですが、並べ替えが面倒であきらめてしまいました。しかしもう一度試してみたいと思います。データの並べ替えなどでマクロが必要になるかもしれませんが、マクロはあまり詳しくないので勉強しつつ頑張ってみます。 大変参考になりました。ありがとうございました。

noname#245936
noname#245936
回答No.1

ただのPivot分析と思われますので。 例文の、「外注A、顧客、月、外注工事別、金額」の一枚表を シートに作成し、別表でピボット表を作成すればいいかと 思います。 マクロは不要だと思います。

sakura3j
質問者

補足

早々の回答をありがとうございました。 大切なことを言い忘れてしまいました。 基本のデータが変動します(特に金額)。そのため、基本データの変動があった場合、自動で集計までしたいという希望があります。 ピボットテーブルは試したのですが、自動で集計の変動ができなかったのです。

関連するQ&A

  • データの合体 VBA

    データの合体 VBA いつもお世話になっております。 シート1 当月売り上げ集計 メーカ名と金額  シート2 納期遅れ集計 メーカー名と金額 シート3 月別受注残集計 メーカー名、月、金額 シート4 売り上げ受注残集計表 今マクロで シート4の様な集計シートを作成したいと思っております。 データ数は それぞれ数百   マクロ設計としては 1.シート1・2・3 のデータは 基幹システムからエクスポートしたものをピボットで集計 2.シート4メーカー名を表示 3.vlookupでデーター表示  4.表の完成としたいと思っています。 私の問題点 合体させたメーカー表示と月別集計を当月を基準として表示させたい(マクロでピボットは作れるのですが 当月基準が出来ない) もし もっと簡単な方法がありましたら合わせて お願いいたします。

  • エクセルデーター集計について

    現在1月から12月まで各月毎のシートと集計表があります。 そのシート内の集計表は  A  ・   B     ・ C ・ D ・ E ・・・・・・・・BB 1担当・顧客ナンバー・日付・苗字・名前・・・・・・・・ 2田中 3佐藤 4小川 5田中 6田中 7佐藤 8井上 ・ 150位まで(行については月により変動あり) と各列と行にデータが入力されてます。 担当者は12名で元になるデータ表には活動順に担当者名が入力されてます。 やりたい事は (1)各担当別の月別集計と年間集計シート作成 月毎にシートを作成でなく、あくまで担当者毎の月毎集計と12か月の年間合計転記を同一シートにする事は可能でしょうか。(個人成績表の為) またその時担当別にシート作成が出来るとうれしいです。 (2)全担当者の月集計一覧シート 一つのシートに全担当者の月別集計(1月から12月)を一覧にしたいのですが、各担当者の月別合計欄を転記の認識なのですが、他にいい方法もありますか? (3)全担当者の年間集計一覧シート (2)の合計を転記の認識です。他にありますか? 以上3点を作成したいと思ってます。 (1)が出来れば何とかなるような気はしますが、どなたかご教授お願い致します。 項目はA~BBまで横一列にあり 担当者の入力も横一列なのでvlookupでも考えましたが、マクロで何とか出来るなら挑戦してみようかと思ってます。 集計表自体他のブックからのリンクやなんやらで20M位ファイルサイズがあり、今回の(1)(2)(3)は新規ブックに作成したいと思います。

  • EXCELの合計

    A列に色々な顧客名がB列に数値が入っています。 現在顧客別にソートを掛けて合計を集計していますが 別シートに自動的に顧客別のシートをつくりそこに自動的に数値合計が 反映できる事は可能でしょうか(同じシート内でも可)。 C列に顧客と数値合計が飛ぶようにしたのですがソートを掛けると 行全体が動くので上手くいきません・・・

  • Excelで集計したとき、集計行にその上の行の文字データを表示させたい

     Excelで集計したとき、合計行には数字などの列データは合計されますが、文字列データの列は数字が出てくるので、折りたたんだときに、たとえば(顧客名の列でAさんだとたら)合計行にも、Aさんという文字を表示させたいです。  手順としては集計させたあとに、マクロで合計行にもその上の文字列を単純にコピーできたらいいです。  手作業でもいいのですが、顧客名が多くて大変です。よろしくお願いします。

  • 日ごとのデータを月でまとめるには?

    エクセルに縦に日付とそれに対応するデータがあります。 <例> ・ | A | B ----------- 1 | 3/28 | 14 2 | 3/29 | 8 3 | 3/30 | 21 4 | 4/01 | 9 5 | 4/03 | 17 これを 3月 | 42 4月 | 26 というように月別に集計するにはどうしたらいいのでしょうか? もちろん手作業でA1:A3までは3月、A4:A*までは4月、、、と拾うと出来るのですが、表全体を指定してピポットテーブルか関数で処理する方法はありますか?

  • VBA Pivot複数セルを合計から平均へ

    Windows7とExcel 2010です。 Pivotテーブルで作成されている表に対して、合計で集計されている複数のセルを選択して、一括して、平均へ変更するVBAを教えていただけないでしょうか。 異なるPIVOTテーブルでも使いたいので、Pivotテーブルの名称やフィールドの名称はマウスで選択した際に自動で取得したいです。 例: 下記の集計があります。(一時間毎の発電量を集計) 元      合計 / 電力  合計 / 日射量 4月2日  1000     3000 4月3日   500     2000 操作 1) 「合計 / 電力」「合計 / 日射量」をマウスで選択 2) マクロを実行すると  「平均 / 電力」「平均 / 日射量」となる。 よろしくお願いします。

  • sumifのように条件に見合う合計を「数値」ではなく「データ(セル)」の合計を集計したいのですが

    SUMIFを使って合計範囲の数値の合計を求めるように、合計範囲の「データが入力されているセル」の合計を求めたいのですが、何かいい関数はありませんでしょうか? 言い換えると、COUNTAを使ってセルの個数を求める場合に検索条件をSUMIFのように特定の検索条件を指定できる関数です。 いろいろ探しましたがうまい方法が見当たりません。 使用方法としては、各曜日ごとのメニュー別の売上金額の合計と人数の合計を求めようとしています。 ワークシートに入力されてるデータは ・各曜日 ・顧客名 ・メニューと支払われた金額 です。 SUMIFを使って、検索条件に各曜日をあてはめ、曜日ごとのメニュー別売上は集計できました。 金額が入力されているセルを合計すれば各メニューごとの人数まで集計できるはずなのですが、SUMIFが「数値」しか集計できない為にそれに代わる関数を探しています。 どうぞよろしくお願い致します。

  • Excel2003のVBAでデータリンクの更新をしない。

    こんにちわ。 私はWindowsXPのExcel2003のVBAでCSVを読み込んでアンケートの結果を集計するマクロと、その結果を別のブックで保存するマクロを作成しました。2つのマクロがあるブックを閉じて、保存されたブックを開くと「このデータソースには他のリンクが設定されています」といったものが表示され、更新するかしないかを問われます。 そこで、このメッセージを表示しないでリンクの更新を行わないようにすることは可能でしょうか?

  • ファイルメーカー 小計の合計

    こんにちは、ファイルメーカPRO9 winXPでの質問です。 小計の合計の出し方がどうしてもわからなくて、困り果てています。 どうかよろしくお願いします。 売上テーブルと売上レイアウトを作り、売上を売上のあった順にどんどん入力していきました 【日付】【ID】【顧客名】【売上】  11月5日  1  A子さん 10000円 11月10日  2  B子さん 20000円 11月12日  3  C子さん 30000円 11月15日  3  C子さん 20000円 11月20日  1 A子さん 10000円        集計レイアウトを作り下記のようにフィールドを配置しました ヘッダ-------------------- 11月度売上一覧  ID 顧客名 売上  IDをソート条件とする小計パート-------------------------- フィールド【ID】【顧客名】【売上の顧客ごとの集計】【消費税の顧客ごとの集計】       1  A子さん       30000円       1500円        2 B子さん          20000円         1000円       3  C子さん       50000円       2500円         --------------------------------------------------------     後部総計 フィールド  【売上集計】【消費税集計】      値       100000円   5000円→これがちゃんと計算されません!     -------------------------------------------------------- 【売上集計】のみ別れいあうと「売上レイアウト」の値を集計機能を使って集計するだけなのでうまくいきました。 【消費税集計】が出来なくて困っています。 これが元の売上レイアウトからひっぱってこれれば簡単なのでしょうが、顧客ごとの集計値が出ない限り計算ができないので、この「集計レイアウト」上で作るしかないのです。 そこで集計機能を使って集計すると、 (合計、使用できるフィールド:【消費税】 繰り返しの集計:全体にしています) 上の例で【消費税集計】が9000円になってしまうのです。 売上レイアウトでB子さんのレコードは1つですが、A子さん、C子さんは2つずつありますね、そうすると (1500×2)+1000+(2500×2)=9000 という計算になってしまうんです。 純粋に、【消費税集計】の縦計をするにはどうすればいいのでしょうか? 繰り返しの集計を個別にしたり、ソートされたグループごとに集計を再開するでソート対象をIDにしたり月にしたり色々試してみましたが、うまくいかず万策尽きています どうか、わかる方教えてください、お願いします。

  • 集計用のVBA

    いつもお世話になります。 今回は、VBAを使った、ブック間での集計について教えてください。 現在、担当者別にExcelブックが15人分あります。(ブック名の定義は"ブック2012(担当者名).xlsx") そのブックには、D3~AH49までデータ(空白セルもあります)が記入されてあり、また月別Sheetが12カ月分存在します。 そして、集計用ブックが存在し、上記のブックと全く同じ配置で構成されています(セル、シート共) やりたいこと ・集計用ブックに、担当者ブックの合計を行いたい。 ・集計用ブックに新たなシートを付加し、そこで年度や担当者名を定義したい。また、そのSheetにコマンドボタンを設置し、そのボタンを押すと自動集計が始まるようにもしたい。  *上記の担当者ブック名の年度が変更されたり、担当者が増減しても、A1セルに2013、B列セルに   担当者を記入していけば、そのブックのみの集計を行ってくれる。 以上が、私のやりたい事で、このVBAを教えていただきたいのです。 皆様、どうかよろしくお願いいたします。

専門家に質問してみよう