- 締切済み
Excelで、条件にあったシートのデータのみを3D
1ヶ月分の請求書を1つのファイル(Book)に作成し、保存しています。 1シートごとに1請求書を作成しているのですが、最後のシートに、1ヶ月分の集計をまとめたものを作成しようと思い、全部の売上合計を、3D集計で作成しました。 その他、各会社ごと(会社名で検索)の売上げや、売れた商品ごと(商品名で検索)の集計なども作成できればと思っているのですが、思うようにいきません。 どのような式を作れば、うまくいくでしょうか? また、1ヶ月分の集計を出している部分も、シート数が毎回変わるため、[Start]と[End]というシートををわざわざ作成し、その中に請求書シートを作成するようにしています。 これももっと良い方法があればぜひ教えてください。 どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
以前の質問に対し同じことを言ったのですが、同じようなことを質問している。エクセルで合計や平均やその他を抜き出したりしたいときは、出来れば1つのシートに「テーブル形式」(やリスト形式)で保存するために仕組みを変えることです。 テーブル形式(2007以後)やリスト形式(-2003)はWEBで照会して勉強してください。 実はエクセルの気の利いたデータ処理は(関数も含め)、ほとんどの機能がこれを前提にしてます。 請求書のイメージ状態にして多数シートにしてしまうと、エクセルでは処理が大変になります。加算1つをとっても、集計するセルの位置が請求書の中でバラバラになったりして、手に負えなくなります。式の複写もままならなくなります。 質問者はシステム的なものを作った経験が無いのに、あれこれやをやろうとするからです。エクセルでは気の利いたことは出来ません。だからエクセルであれこれやっている人を聞くと、間違った道具選択で背伸びしているなあと思います。 こういう質問をするということは、エクセルの経験を十分積んで、壁に当たって、エクセルの限界に、まだ気づいてない証拠です。 ーー 質問者がやろうとしていることを自然にするには、データベースソフトなどでやるのが普通です。 もっと言うならば、お金を出して(エクセルの延長ではなくて)専門家にやってもらう分野と思います。素人が手を出せるのには限りがあります。 そうしないなら質問者なりがVBAでも出来るようになることです。 ーー 本件について言えば、 (1)データの集約は1シートに行い、印刷する請求書はその都度派生物と考えるべきです(計数集計などには使わない)。 計数集計などは元のデータシート(出来れば1月分など1つ)で関数を使ってでも処理すべきです。 ーー (2)印刷する請求書は、元データから1ページ分を作成し、印刷する時のその場限りに、します。 次ページの印刷が前ページのセル範囲に設定します。 但し印刷の指示をその都度出すには(セル範囲をクリアするには)1行ずつだけのVBAコードが最低必要ですが。 ーー Googleで「imogasi 請求書 折衷」で照会すれば、沢山回答記事があるのですが、メイン解説がドレだったか判からなくなっている。興味あれば捜してみて。
- keithin
- ベストアンサー率66% (5278/7941)
そういうことが出来る計算方法はありません。 配列数式でゴリゴリやる手も無いではありませんが,むしろマクロを使って自作関数(ユーザー定義関数)を作ってしまった方が簡単です。 サンプル手順: ブックを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける public function mySumif(a as range,b as string,c as string,d as variant,e as range) dim w as worksheet dim f as boolean application.volatile for each w in worksheets if w.name = b then f = true if f then if w.range(a,address) = d then mysumif = mysumif + w.range(e.address) end if end if if w.name = c then exit for next end function ファイルメニューから終了してエクセルに戻る 使い方: =mysumif(条件セル,開始シート名,終了シート名,条件値,合計セル) 使用例 =mysumif(A1,"Sheet2","Sheet13","abd社",E1) 左から順に見てシート2(と言う名前のシート)からシート13までにあるシートで,A1セルがabc社だったときにE1を合計します。「Start」シートと「End」シートに挟んでも勿論構いません。 #一ヶ月分の仕事が終わったら,ブックを複製し,請求書シートを削除してまた新しい月の集計を行うこと #補足 必要に応じて,ご利用のエクセルのバージョンに応じた方法でマクロを有効にすること 必要に応じて,アドインなどにして利用すると良い それぞれの具体的なやり方が調べても判らない時は,ご利用のエクセルのバージョンを明記して別途新しいご相談を投稿し問題を解決してから,作業を行ってください。 #補足 何か「違うこと」がやりたくなったら,また違うマクロを新たに書き起こすことになります。もしそういう事を思いついたときは,「ついでにお願い」は止めて(そういうご相談者さんがすごく多いので)また新たなご質問として,「こういう状況でこういう事がしたい」とキチンと書き起こして,ご相談を投稿してみてください。