- 締切済み
エクセル表加工のアドバイス求む
先日エクセルの操作に困って質問をアップしたところ、たちまち快刀乱麻を断つ如き解決法を伝授いただきました。調子に乗ってもう一度相談させていただきます。 あるところから商品販売データが毎月提供されます。表のA列には商品コード、B列には販売数量、C列には販売金額が入っています。(本当はもう少し複雑な表ですが、相談のために単純化しました) 商品は全てのアイテムが毎月販売されるとは限らず、販売終了となるアイテムや新規取り扱いとなるアイテムもあり、表中の商品はアイテム数も種類も毎月異なります。当然表の行数は毎月異なることになります。 この単月毎の表を12ヶ月の商品毎の販売数・販売金額の一覧表にしたいのです。できることであれば毎月最新のデータで表を更新して直近12ヶ月の表を毎月作成したいのです。 どうぞ、良いアイディアを教えて下さい。
- みんなの回答 (10)
- 専門家の回答
みんなの回答
- kazuhiko5681
- ベストアンサー率49% (79/159)
間違えて回答するボタンを押してしまいました。補足させて下さい。 先程も書きましたように、 アクセスなら1回フォームを設定すればあなた様が思われていることは実現することができます。 でも、アクセスを使うのではなくエクセルでこのことを実現したいのであれば、やはりマクロを書くしか方法はないと思います。 もし、私でよろしければさほど難しいマクロではないので、書くコードをお知らせすることができます。 ご希望の節は、お知らせ下さい。
- kazuhiko5681
- ベストアンサー率49% (79/159)
はじめまして。私もpop_up_pump_upさんが回答されたように、アクセスを使ったほうがいいと思います。 ところで、あなた様がアクセスの使い方がわからないということですが、マイクロソフトのサポートセンターへ問い合わせてみたらいかがでしょうか? あなた様のやりたいことが実現できるまで、同じことを何回質問してもいやな顔をせず、わかるまで担当者が責任を持って対応してくれます。 サポートには、無償サポートと有償サポートの2種類があります。 無償サポートというのは、初めてソフトを入手した時、どのソフトにもついています。ソフトの種類によって質問できる回数が違いますので、詳しくは担当者に聞いてみて下さい。 有償サポートというのは、無償サポート終了後にサポートを受ける方法です。私はスポット契約をお勧めします。この方法は質問ごとに契約センターと契約し、その度問題が解決するまでサポートを受けるという方法です。1回の契約料は、マクロを含まない時は4000円含む時は18000円です。 有償サポートの場合は、0120-17-0196へ電話をかければ担当者が対応して下さいます。 無償サポートにつきましては、担当部署の電話番号を忘れてしまいましたので、03-5454-8000(マイクロソフト本社)へ電話をかけ、担当部署の電話番号を聞いてみて下さい。 私もこの方法を利用して、エクセル・ワード・アクセス・VBAをある程度使いこなせるようになりました。 あなた様もこの方法を利用すれば、必ずアクセスをある程度自由に使いこなすことができるようになると思います。
- cafedemocha
- ベストアンサー率29% (232/789)
Accessを使うに当たって、悩まれる事が多いのは、テーブル・クエリー・フォーム・レポート等のそれぞれの役割ですね 簡単に言っちゃえば、テーブルは、データそのものを格納しておくための物 クエリーは、データを条件に基づいて抽出したり、計算させたり、様々な加工を施す物、まぁ篩みたいなものです、フォームは、極普通の使い方では、テーブルにデータを入力する際に作業を容易にするための物(それ以外にもかなりの用途はありますけどね) で、レポートは、最終的にまとめられた結果を印刷する等の体裁を整える物 こんな風に考えると、理解し易いかもしれないですね マクロやモジュールは、これらの操作を自動化したり、一覧に無いユーザー定義の関数を作成したり、自動的に値を挿入したりする等の操作や、セキュリティを上げたり等、様々な事を行う物ですね 特に、モジュールで定義して、構造を変えられなくすると、ユーザーレベルでは、一旦完成したデータベースを作り替えられる心配が無くなり、まぁ安心ですね
お礼
ありがとうございます。 確かに、用語をきちんと理解することはソフトを使いこなす上で大切なことですよね。
- imogasi
- ベストアンサー率27% (4737/17069)
「更新」と言う処理を、Vlookup関数と手操作でやって 見ました。 (1)テストデータとして(マスタファイルに当たる)を作る(A1:E8)。11月の数量・金額列のD,E列は空白でスタート。(列の並びが本画面では乱れると思いますが、ご注意ご容赦を。) 10月 11月 商品コード 数量 金額 数量 金額 001-001 1 10 #N/A #N/A 001-002 2 20 #N/A #N/A 001-003 4 32 2 8 002-001 2 16 5 40 002-002 3 9 #N/A #N/A 003-001 5 5 2 20 (2)11月実績のデータとして(トランザクションデータに 当たる)F1:I7にデータを作る。初めはI列は空白。 11月 商品コード 数量 金額 商品コード2 001-003 2 8 001-003 002-001 5 40 002-001 003-001 2 20 003-001 002-003 3 30 #N/A 004-002 2 20 #N/A (3)D3セルに関数式=VLOOKUP($A3,$F$3:$H$7,2,FALSE)を 入れる。(絶対番地にするところと、Falseは留意) D4から最下行まで複写。 (4)E3セルに関数式=VLOOKUP($A3,$F$3:$H$7,3,FALSE)を 入れる。絶対番地にするところと、Falseは留意) E4から最下行まで複写。 **以上でマスターにあるトランザクションのデータは商品コード一致分は数量、金額を転記が済んだ。残るは11月新顔売上の分をどう追加するか。 (5)I3に関数式=VLOOKUP($F3,$A$3:$A$8,1,FALSE)を入れる。(絶対番地にするところと、Falseは留意) I4から最下行まで複写。 (6)F3からI7を範囲指定して、データ-並べ替え 最優先されるキー-商品コード2、先頭行-データ、OKで並べ替えする。#N/Aは下に沈殿する。 (7)I列が#N/A分のみF列を範囲指定する (8)A列の最下行の次行以下に貼り付ける。 (9)D列、F列を式複写を最下行まで延ばす。 新顔の数量、金額を転記が済んだ。
お礼
imogasiさん、ありがとうございます。 実はこの方法こそ今私が実際に行っている作業とほぼ同じことなのです。いかにも手作業、という感じですよね。もっと楽に出来るようにして、ワープロ打ちやデータ入力くらいの作業しか経験のない事務担当でも出来るようにしたいのです。
- imogasi
- ベストアンサー率27% (4737/17069)
#5の者です。解答を入れて補足を良く見ると、解答では 題意の取り違えているようです。昨晩に解答ない状態で考え始めたので、わからず、済みません。 年間表として年月を横に流して、 商品コード、10月販売数、10月販売額、11月販売数、11月販売額、12月販売数、12月販売額・・・9月販売数、9月販売額、年間販売数、年間販売額としたいのであれば エクセルVBAを使い、年間表、単月表を共に商品コードで ソート(並び替え)しておき、商品コードをマッチング・キー として年間表の最右列に追加し、12ヶ月の販売数と販売額をそのプログラム中で足せして合計列を追加すれば出来ます。開始に当たって去年の同月分は列削除で削除しておく。プログラムロジックは情報処理試験にも出るトランザクション更新のものを使えば良い。
お礼
No.5へお礼を書いている間にNo.6の回答がアップされていました。 よくよく見ればimogasiさn、前回の質問(最大値を取る支店名の表示)でもお世話になりました。その節はありがとうございました。 VBAを使えばできる、という回答があることは予想していました。残念ですがAccess同様、VBAもまったく素人で手が出ません。
- imogasi
- ベストアンサー率27% (4737/17069)
年間表と月間表を考える。 下記テストデータをA1:D11まで作る。年間表のつもり。 月間表の9月分を貼り付けた後の状態。 年月 商品コード 販売数 販売金額 2001年10月 001-002 1 10 2001年10月 002-001 3 20 2002年4月 001-002 2 20 2002年4月 001-005 5 40 2002年4月 002-009 2 10 2002年8月 001-001 1 10 2002年9月 001-001 2 20 2002年9月 001-002 4 50 2002年9月 001-005 2 30 2002年9月 002-001 3 20 (1)昨年9月分を削除。(先月年間表を年月で並び替えし 2000/9月の範囲を指定しDELキーで削除。 (2)2002/9月分(単月表)を最下行以下にコピーする。 (3)データ-並び替えをクリック 最優先されるキー-商品コード 2番目に優先されるコード-年月 範囲の先頭行-タイトル OKをクリック。 (4)メニューのデータ-集計をクリック。 「集計の設定」の画面になる。 (5)グループの基準-商品コード 集計の方法-合計 集計するフィールド-販売数と販売金額にチェックを 入れる。 「集計行をデータの下に入れる」チェックを入れる。 OKをクリック。 (6)行番号の左に出る、集計レベル「1,2,3」の2を クリック。 下記になります。 年月 商品コード 販売数 販売金額 001-001 計 3 30 001-002 計 7 80 001-005 計 7 70 002-001 計 6 40 002-009 計 2 10 総計 25 230 年月が邪魔なと思えば、商品コードから販売金額までを 範囲指定して印刷する。 元に戻すのは、データ-集計-全て削除で明細表示状態に 戻る。
お礼
早朝よりありがとうございます。 申し訳ありません、私の質問の書き方が不十分で悪かったのですが、他の方への補足やお礼に書いたとおり、得られた結果はテキストファイルに落として他のソフトに取り込むデータとするため、商品毎にデータが横方向に並んでいないといけないのです。 私の説明不足でご迷惑をおかけして済みません。
アクセス使ってみてはどうですか? ある期間の商品ごとの販売数・販売金額をもとめたいのならアクセスの方が楽ですよ。提供されるデータをアクセスにインポートし、そこで加工してからエクセル上に持ってくるというやりかたです。 この作業、エクセルだけでやるにはかなりしんどいと思います。
お礼
やっぱりAccessですか。Accessっておぼえたらかなり色々使えそうですよね。すでに私のパソコンにはインストールされているのですが勉強の時間がなくてほっぽらかしです。どうしたらおぼえられるのでしょうか。 真夜中にもかかわらず、ご回答いただきありがとうございます。私は一旦眠らせていただきます。
- BraveStory
- ベストアンサー率47% (11/23)
年月の列を追加し、毎月のデータをつなぎ合わせたシートを作る。あとはそれを、ピボットテーブルでまとめれば(縦の項目に商品コード、横に年月、値に販売数量と金額で)、見やすくなるのではないでしょうか。
お礼
なるほど、年月の列の挿入は良い考えですね。ただ、No.1の方の補足にも書いたとおり、最終的にはテキストファイルに落として他のソフトにインポートを目的としているので、ピボットテーブルではない方法が望ましいのです。 ご回答ありがとうございます。こんな真夜中なのに。
- fu-raibo-
- ベストアンサー率31% (41/129)
恐らく12ヶ月集計のワークシートを作っておいて そこに自動集計されるようにするのが理想なんだとは思いますが それは思いつかなかったので、スマートじゃないけど一応集計はできると言う方法を。 集計用のワークシートを作ってそこに12ヶ月分のデータを連続してコピーします。 商品コードとかのタイトルは一行目だけで後はデータだけをコピーです。 商品コード 販売数量 販売金額 ABC 2 500 DEF 5 1000 商品コード 販売数量 販売金額 ABC 2 500 GHQ 3 1500 こんな感じで12ヶ月分あったとしたら、これを全部くっつけて 商品コード 販売数量 販売金額 ABC 2 500 DEF 5 1000 ABC 2 500 GHQ 3 1500 と言う表を作ります(商品コードでソートとかの処理はいりません。単純に張りつけていくだけです)。 この出来上がった表に対して、ピポットテーブルで行を商品コード、データを販売金額の合計にすると、 合計:販売金額 商品コード 計 ABC 1000 DEF 1000 GHQ 1500 なんて感じの集計表ができます。 データに販売数量の合計もいれると 商品コード データ 計 ABC 合計:数量 4 合計:販売金額 1000 DEF 合計:数量 5 合計:販売金額 1000 GHQ 合計:数量 3 合計:販売金額 1500 と言う表になります。 とりあえずこんなやり方でどうでしょう。
補足
No.1の方に補足したとおりです。戴いたご回答ですと、ちょっと結果が違ってしまいます。私の質問がいい加減で済みません。
- cafedemocha
- ベストアンサー率29% (232/789)
単月ごとの表が既にあって、それを、一覧集計する・・・ そう理解して宜しいのでしょうか? その場合は、SUMIF関数などを組み合わせて使えば簡単ですが、この先様々なデータ処理を行おうとするのであれば、既に、Excelで処理する範疇を超えているようですね、ファイルも重くなります 集計表には、全てのアイテムを記載しておき、それぞれの月ごとにSUMIF関数で集計させれば、データの入力に伴い、集計表に反映されていきます お節介ですが、Access等のデータベース導入を検討されては如何でしょうか
補足
わかりにくくて済みません。 現在ある表は質問の中に書いたとおりです。この表が1月分、2月分というように月ごとにファイルとして存在します。結果として欲しい表は、A列に商品コード、B列にn月の販売数、C列にn月の販売金額、D列にn+1月の販売数、E列にn+1月の販売金額....という表です。 実はこうして加工した後、テキストファイル(CVS)に落として他のソフトにインポートして使うのです。 Accessは勉強している時間がなくて、宝の持ち腐れになっています(T_T)。Accessを憶えるいい勉強法を教えて下さい、といったら別の質問になってしまいますね。
お礼
ご丁寧な回答をありがとうございました。Accessに挑戦してみましょう。