tatsu99様
お世話になっております。
先日、事前に質問させていただきました件ですが
まだ条件確定しておらず、また改めて提示させていただきます。
申し訳ありません。
↓
https://oshiete.goo.ne.jp/qa/11227677.html
本質問では、以前ご教授頂きましたマクロの修正をご教授頂きたく
投稿させていただきました。
↓
同一フォルダ内の複数ブックの複数シートの特定セルの集計を出したい
https://oshiete.goo.ne.jp/qa/10618547.html
これまで元データから「個人集計」マクロにて個人ファイルへデータを一旦集計→「全体集計」マクロで支店・課ごとのデータを集計しておりましたが
来期より個人集計はせず、元データから直接全体集計へ条件ごとに項目を集計することになりました。
データ集計先のフォーマットが変更になりましたので、共有させて頂きます。
下記へ、ブックを格納させて頂きましたのでご確認頂けますと幸いです。
↓
http://xfs.jp/FdG1L
w4c218we
①全体(変更後)シートが新しくデータ集計先のフォーマットとなります。
また、D列に新たに項目列を追加いたしました。
②参照元データですが、以前は1部~3部でシートを分けておりましたが
来期より1つのシートで管理することになりました。
格納ブックの「参照元データ(変更後)」へ元データのサンプルを作成しております。
参照先の月、分類区分コードに合致した支店&所属へデータを集計したいです。
何卒、ご教授頂けますと幸いです。
よろしくお願いいたします。
No.19
- 回答日時:
エラー処理について
ケース1.
元データのB列(支店区分)とC列(所属)の組み合わせが、全体シートのA列(支店)、B列(課)に登録されていない場合、
エラーとし、マクロを停止しますが、よろしいでしょうか。
通常、このケースが発生するのは、元データのB列、C列がおかしいか、全体シートのA列、B列がおかしいかのどちらかの場合です。
唯一、正常ケースで発生しうるのは、課が廃止になった場合です。
例
2019年度 東京支店 3課 が存在する。
2020年度 東京支店 3課 を廃止した。
2020年度になり集計を行うとき、全体シートから東京支店 3課を削除した場合、前年データに東京支店 3課があるため、このエラーが発生する。
従って、この場合は、全体シートから東京支店 3課を削除せず、運用する。
全体シートから東京支店 3課を削除するのは、2021年度からとする。
上記のような運用をすれば、このケースのエラーは回避できます。
ケース2.元データのF列(分類区分コード)が、全体シートに登録されていない場合、
エラーとし、マクロを停止しますが、よろしいでしょうか。
これも、通常は元データか全体シートのどちらかがおかしい場合です。
唯一、正常ケースで発生しうるのは、分類区分コードが廃止になった場合が、ケース1と同様の運用で回避できます。
例 分類区分コード=20を2020年度から廃止した場合、
全体シートから(分類区分コード=20)を削除するのは、2021年度からにすれば、エラーは発生しません。
エラー処理について、わかりやすくご説明いただきましてありがとうございます。
元データ、もしくは全体シートどちらかに存在しない支店区分(支店)、所属(課)の組み合わせ、分類区分コードがあった場合
エラーになるということですね。
ケース1、ケース2とも回避方法含め、承知いたしました。
何らかの変更があった際は事前に確認をし、次年度まではそのまま元データ、全体シートに存在するようにいたします。
また、ケース2に関する分類区分コードの追加に関して№13にてご教授頂きましたが
ケース1に関することになりますが、逆に支店が追加になった場合は新たに支店・課のブロックを追加し
「XXX合計」に集計されるように、元データ、全体シートに存在する支店に所属をさせれば集計されるという認識でよろしいでしょうか?
何度も申し訳ございませんが、何卒ご教授頂けますと幸いです。
No.18
- 回答日時:
前回同様、「合計」「XXX合計」を集計するルールのままでお願いできましたら幸いです。
本件、了解です。
本部については
支店 課
①本部 本部
②本部 本部 合計
のように2つのブロックが定義されていないと、エラーになりますが、よろしいでしょうか。
ご返信いただきましてありがとうございます。
こちらこそ、以前のルールについて把握しておりましたのにも関わらず
紛らわしいサンプルを提示してしまい、お手数をおかけしてしまいました。
申し訳ありません。
当初のルールのままでよろしくお願いいたします。
また、本部に関しましては本部合計のブロックを追加いたしますので
そちらで進めていただけますと幸いです。
よろしくお願いいたします。
No.17
- 回答日時:
最終確認です。
No14回答のお礼欄を反映しました。No10との違いの個所を★を付けました。ご確認ください。
前年 売上集計対象コード 82、86、85、87、88の場合
元データ 設定先
H列 → ★集計しない
I列 → I列(実績・前年数量)
J列 → N列(実績・前年粗利)
前年 売上集計対象コード 82、86、85、87、88以外の場合
元データ 設定先
H列 → I列(実績・前年数量)
I列 → 集計しない
J列 → N列(実績・前年粗利)
当年 売上集計対象コード 82、86、85、87、88の場合
元データ 設定先
H列 → ★集計しない
I列 → J列(実績・当年数量)
J列 → O列(実績・当年粗利)
当年 売上集計対象コード 82、86、85、87、88以外の場合
元データ 設定先
H列 → J列(実績・当年数量)
I列 → 集計しない
J列 → O列(実績・当年粗利)
最終的な内容をご提示いただきましてありがとうございました。
内容確認いたしました、こちらでお願いできましたら幸いです。
何卒、よろしくお願いいたします。
No.16
- 回答日時:
全体シートですが、
以前は、支店=本部、課=本部 はなかったように思われます。
今回、新規追加でしょうか。
以前は、
支店 課
A支店|1課
A支店|2課
A支店|3課
A支店|A支店 合計
のように並んでいて、
B列の課のセルが XXX合計 のように最後の2文字が「合計」の場合、その支店の合計を算出する
ようになっていました。
従って、既存の考え方を踏襲すると、本部を追加した場合も 「本部 合計」がないとエラーになります。
本部|本部
本部|本部 合計
のようになっていないと、エラーになってしまいます。
これは、例外的に 支店名が「本部」の場合は、「本部 合計」がなくてもOKにするということでしょうか。
又、合計のブロックは最後の2文字が「合計」なら、合計のブロックとみなす約束でしたが、
今回は、最後の1文字が 「計」なら合計のブロックとみなすことにしたのでしょうか。
お世話になっております。
以下、回答させていただきます。
>全体シートですが、
> 以前は、支店=本部、課=本部 はなかったように思われます。
>> 今回、新規追加でしょうか。
> 以前は、
> 支店 課
>A支店|1課
>A支店|2課
>A支店|3課
>A支店|A支店 合計
>のように並んでいて、
>B列の課のセルが XXX合計 のように最後の2文字が「合計」の場合、その支店の合計を算出する
> ようになっていました。
> 従って、既存の考え方を踏襲すると、本部を追加した場合も 「本部 合計」がないとエラーになります。
> 本部|本部
> 本部|本部 合計
>のようになっていないと、エラーになってしまいます。
>これは、例外的に 支店名が「本部」の場合は、「本部 合計」がなくてもOKにするということでしょうか。
>又、合計のブロックは最後の2文字が「合計」なら、合計のブロックとみなす約束でしたが、
>今回は、最後の1文字が 「計」なら合計のブロックとみなすことにしたのでしょうか。
→本部についてですが、以前はA支店の課:本部としていた為、今回は分けて集計することとなりました。
ですので、「本部 合計」といたします。大変失礼いたしました。
また、ご指摘の通り以前は「XXX合計」というルールになっておりましたのにサンプルでは「XXX計」として
共有しておりました。大変申し訳ありません。
前回同様、「合計」「XXX合計」を集計するルールのままでお願いできましたら幸いです。
お忙しい中、何度もご確認いただきまして大変お手数をおかけして申し訳ございません。
No.15
- 回答日時:
元データのデータの開始行について、
以前の元データは3行目からデータが開始していましたが、
今回の元データも3行目からデータが開始するという前提で良いでしょうか。(添付図は以前の元データです。黄色部分がデータの開始行)
No.14
- 回答日時:
>元データ:H列(数量)→J列(実績・当年数量)へ加算 ※82、86、85、87、88以外
>元データ:I列(売上)→J列(実績・当年数量)へ加算 ※82、86、85、87、88
>上記で提示しております通り、集計先は同一ですがコードによって元データの参照列が異なります。
>集計先が「数量」と表示されておりますが、実際は「数量/売上」というようなニュアンスです。
再度、質問し直します。
当年データが添付図のデータ1件のみの場合です。(前年のデータはデータなしとします。)
10月 支店=本部 課=本部 分類区分コード=86なので、全体シートの28行目が集計先になります。
元データのH列(2) →J列(実績・当年数量)へ加算 J28へ加算
元データのI列(45000) →J列(実績・当年数量)へ加算 J28へ加算
なのでJ28=2+45000=45002
となりますが、あってますか。
という質問です。
これで、あっているとすると
分類コード=86の場合のJ28の意味は、当年の売上なので、45000のはずですが、何故45002になるのでしょうか。
この場合、元データのH列(=2)をJ28へ加算してはいけないと思うのですが、いかがでしょうか。
tatsu99様
こんにちわ。
ご返信が遅くなってしまい申し訳ありません。
以下、回答させていただきます。
>再度、質問し直します。
> 当年データが添付図のデータ1件のみの場合です。(前年のデータはデータなしとします。)
>10月 支店=本部 課=本部 分類区分コード=86なので、全体シートの28行目が集計先になります。
> 元データのH列(2) →J列(実績・当年数量)へ加算 J28へ加算
> 元データのI列(45000) →J列(実績・当年数量)へ加算 J28へ加算
>なのでJ28=2+45000=45002
>となりますが、あってますか。
>という質問です。
→私の説明が混乱を招いてしまい申し訳ありません。
上記の例で言いますと分類区分コードは86はデータI列(売上)のみ参照先としたい為
H列は参照しない、としたいです。
> 元データのH列(2) →J列(実績・当年数量)へ加算 J28へ加算
→加算しない
> 元データのI列(45000) →J列(実績・当年数量)へ加算 J28へ加算
→加算する
>これで、あっているとすると
>分類コード=86の場合のJ28の意味は、当年の売上なので、45000のはずですが、何故45002になるのでしょうか。
>この場合、元データのH列(=2)をJ28へ加算してはいけないと思うのですが、いかがでしょうか。
→私の説明がわかりづらく申し訳ありません。
・分類区分コード82、86、85、87、88は元データ(I列:売上)を参照→J列(実績・当年数量)へ
※元データH列は集計しない
・分類区分コード82、86、85、87、88以外は元データ(H列:数量)を参照→J列(実績・当年数量)へ
※元データI列は集計しない
何度も申し訳ありませんが、何卒よろしくお願いいたします。
No.13
- 回答日時:
>→ご提示いただいた内容の場合、今回こちらから提示したコードが今後発生した場合
>追加のコードをD列に追加し、行数が増えたとしても影響はないという認識でしょうか?
>私がご提示いただいた内容について理解不足でしたら申し訳ありません。
はい。問題ありません。(あなたがマクロを以下のように修正して対応します)
現在、考えているのは、以下のような形です。(正式にはリリース時説明しますが・・・)
①Const XXXX As Long = 28 '1ブロックの行数
②dim YYYY as variant
YYYY = array("82","86","85","87","88")
上記の2つの値を(XXXX,YYYY)を用意しておき(リリース時、XXXX,YYYYは他の具体的な名前に変わりますが)
ケース1
分類区分コードXXを追加して1行増える場合(XXが82、86、85、87、88と同じ扱いの場合)は、
Const XXXX As Long = 29
YYYY = array("82","86","85","87","88","XX")
のようにします。
ケース2
分類区分コードXXを追加して1行増える場合(XXが82、86、85、87、88以外と同じ扱いの場合)は、
Const XXXX As Long = 29
YYYY = array("82","86","85","87","88")・・・これは変更しません
のようにします。
ケース3(これはないかもしれませんが)
分類区分コードXXを追加して2行増える場合(XXが82、86、85、87、88と同じ扱いの場合)は、
Const XXXX As Long = 30
YYYY = array("82","86","85","87","88","XX")
のようにします。
ケース3の場合は、XXが記述された行について、集計が行われます。
もう1つの行は、空白になるので、その行は、集計は行われません。(関数式が埋め込まれるはずなのでマクロはその行を一切変更しません)
tatsu99様
おはようございます。
ご返信が遅くなり申し訳ありません。
分類区分コードが増えた際について
わかりやすくご説明頂きましてありがとうございます。
とても勉強になります。
仰る通り、ケース3以外が発生する可能性があります。
その際はご教授頂いた内容で修正できるようにしたいと思います。
No.12
- 回答日時:
私が理解できないための質問ですが、
元データが、当年の分類コード=82の場合、
元データのH列→J列(実績・当年数量)へ加算
元データのI列→J列(実績・当年数量)へ加算
ですが、その理由は、82の場合は、売上で集計をしているからということでした。
そうすると、
元データのH列は売上金額であることは理解できるのですが、
元データのI列も売上金額なのでしょうか。もし、そうなら、I列の売上とH列の売上の違いはなんでしょうか。
元データのI列が数量なら、J(実績・当年数量)へ加算してはいけないような気がします。
>私が理解できないための質問ですが、
> 元データが、当年の分類コード=82の場合、
> 元データのH列→J列(実績・当年数量)へ加算
> 元データのI列→J列(実績・当年数量)へ加算
>ですが、その理由は、82の場合は、売上で集計をしているからということでした。
>そうすると、
> 元データのH列は売上金額であることは理解できるのですが、
> 元データのI列も売上金額なのでしょうか。もし、そうなら、I列の売上とH列の売上の違いはなんでしょうか。
> 元データのI列が数量なら、J(実績・当年数量)へ加算してはいけないような気がします。
→私の説明がわかりづらく申し訳ありません。
元データ:H列(数量)→J列(実績・当年数量)へ加算 ※82、86、85、87、88以外
元データ:I列(売上)→J列(実績・当年数量)へ加算 ※82、86、85、87、88
上記で提示しております通り、集計先は同一ですがコードによって元データの参照列が異なります。
集計先が「数量」と表示されておりますが、実際は「数量/売上」というようなニュアンスです。
私が質問に対して、的を得ない回答をしてしまっておりましたら
大変申し訳ありません。
宜しくお願いいたします。
No.11
- 回答日時:
分類区分コードの追加があった場合の、集計先のあつかい。
今後、分類区分コード=XX が追加された場合の扱いですが、
以下のようにしますが、よろしいでしょうか。
1.元データのJ列については、分類区分コードに依存しないので、特に分類区分コードの追加を意識しない。
前年J列→N列(実績・前年粗利)
当年J列→O列(実績・当年粗利)とする。
2.元データのH列、J列については、以下のように対応する。
ケース1.XXが82、86、85、87、88と同様の扱いの場合、
マクロで、82、86、85、87、88のコードを格納した配列を用意しておくので、その配列にXXを追加する。
全体シートのD列にXXを追加する。
上記により、82、86、85、87、88と同様の動作が保障される。
ケース2.XXが82、86、85、87、88以外と同様の扱いの場合、
マクロ中の82、86、85、87、88のコードを格納した配列にXXを追加しない。
追加するのは、全体シートのD列のみである。
上記により、82、86、85、87、88以外と同様の動作が保障される。
tatsu99様
遅くまで何度も申し訳ありません。
以下、回答させていただきます。
ご確認の程、宜しくお願いいたします。
>分類区分コードの追加があった場合の、集計先のあつかい。
> 今後、分類区分コード=XX が追加された場合の扱いですが、
> 以下のようにしますが、よろしいでしょうか。
> 1.元データのJ列については、分類区分コードに依存しないので、特に分類区分コードの追加を意識しない。
> 前年J列→N列(実績・前年粗利)
> 当年J列→O列(実績・当年粗利)とする。
→仰る通りです。
> 2.元データのH列、J列については、以下のように対応する。
>ケース1.XXが82、86、85、87、88と同様の扱いの場合、
>マクロで、82、86、85、87、88のコードを格納した配列を用意しておくので、その配列にXXを追加する。
> 全体シートのD列にXXを追加する。
> 上記により、82、86、85、87、88と同様の動作が保障される。
>ケース2.XXが82、86、85、87、88以外と同様の扱いの場合、
>マクロ中の82、86、85、87、88のコードを格納した配列にXXを追加しない。
> 追加するのは、全体シートのD列のみである。
> 上記により、82、86、85、87、88以外と同様の動作が保障される。
→ご提示いただいた内容の場合、今回こちらから提示したコードが今後発生した場合
追加のコードをD列に追加し、行数が増えたとしても影響はないという認識でしょうか?
私がご提示いただいた内容について理解不足でしたら申し訳ありません。
No.10
- 回答日時:
10月へ集計する場合の最終確認です。
以下で、間違いないでしょうか。(前年はNo9と同じです)
前年 売上集計対象コード 82、86、85、87、88の場合
元データ 設定先
H列 → I列(実績・前年数量)
I列 → I列(実績・前年数量)
J列 → N列(実績・前年粗利)
前年 売上集計対象コード 82、86、85、87、88以外の場合
元データ 設定先
H列 → I列(実績・前年数量)
I列 → 集計しない
J列 → N列(実績・前年粗利)
当年 売上集計対象コード 82、86、85、87、88の場合
元データ 設定先
H列 → J列(実績・当年数量)
I列 → J列(実績・当年数量)
J列 → O列(実績・当年粗利)
当年 売上集計対象コード 82、86、85、87、88以外の場合
元データ 設定先
H列 → J列(実績・当年数量)
I列 → 集計しない
J列 → O列(実績・当年粗利)
tatsu99様
最終確認いただきましてありがとうございます。
ご提示いただいた内容で問題ございません。
お手数をおかけして申し訳ありませんが
何卒、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ピボットテーブルのことです
-
エクセルで○や×の図形の集計は...
-
エクセルの集計を数字以外です...
-
マクロで貼り付け位置を可変さ...
-
オートシェイプを色別に個数を...
-
エクセルのピポットテーブルで...
-
ピボットテーブルの項目間の計算
-
Excelで列の項目を固定して集計...
-
IF関数を使用した数字に、カン...
-
ピボットテーブル集計表につい...
-
パソコンで回答できる穴埋め問...
-
Excel週ごとの集計を関数で
-
ピボットテーブルへの集計フィ...
-
Excel 2003 ピボットテーブルの...
-
アクセスのFormat関数に...
-
エクセルの集計機能を横方向(...
-
ピポットテーブルの参照元を別...
-
エクセルで小計を出したいので...
-
Microsoft Formsによるアンケー...
-
エクセル ピボットテーブルを更...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ピボットテーブルのことです
-
エクセルのピポットテーブルで...
-
ピボットテーブルの項目間の計算
-
マクロで貼り付け位置を可変さ...
-
エクセルの集計を数字以外です...
-
エクセルで○や×の図形の集計は...
-
オートシェイプを色別に個数を...
-
IF関数を使用した数字に、カン...
-
Microsoft Formsによるアンケー...
-
エクセルの集計機能を横方向(...
-
勤務表の中抜け集計の関数を教...
-
エクセルで数値のプラス毎とマ...
-
保存ブックを開かずコピーペー...
-
ピボットテーブルの集計値をVBA...
-
ピボットを使ったシートに計算...
-
ピボットテーブルへの集計フィ...
-
価格帯別集計 EXCELで効率の良...
-
エクセル 小計後に別シートにデ...
-
セルの中の文字を削除したい
-
エクセルを使ってCSVデータを自...
おすすめ情報
tatsu99様
お世話になっております。
お忙しい中、マクロ修正頂きましてありがとうございます。
また、検証実施のご報告が遅くなり、大変申し訳ありません。
ご提示いただきました注意点に則り、分類区分コード、支店の追加/削除につきまして検証いたしました。問題なく、検証完了いたしました。本当にありがとうございました。
また、恐れ入りますが追加で質問させてください。
追加での質問です。
今後、行数が変動(支店数増減、分類コードの増減)する場合については
ご教授頂いたのですが、今後列数の変動(1か月のブロック項目の増減、抽出先の項目の並びの変動)があった場合はどの部分を修正すればよろしいでしょうか?
1か月のブロックの列数が変動した場合は下記を修正するというのはなんとなく理解しているのですが。。。
他に修正が必要な箇所がございましたら、ご教授頂けますと幸いです。
★1か月のブロックの列数が変動した場合★
指定月から指定月対応のカラム位置(計画数量)を計算する
・276行目 9月=186→9月=210へ修正
・279行目 12→14へ修正
・282行目 12→14へ修正
また、まだ条件等未確定の案件修正に関しては追って質問させて頂ければ幸いです。
↓
https://oshiete.goo.ne.jp/qa/11227677.html
サンプル画像添付いたします。
よろしくお願いいたします。