![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
tatsu99様
いつもお世話になっております。
以前、ご教授頂きました件で変更がございましたので
質問させていただきます。
↓
https://oshiete.goo.ne.jp/qa/10992933.html
module1
最優秀拠点部署
module3
最優秀拠点部署数量金額
module5
最優秀拠点部署売上金額
※module4、6については下記にて修正いただきました。
https://oshiete.goo.ne.jp/qa/11003131.html
別件で対象列が変動した場合についてご教授頂きましたが
再度、本件の場合についてもマクロのどの部分を修正すればよいのか?
ご教授頂けますと幸いです。
ひと月ごとの列数がC列から23列→41列へ変更。
対象列が下記へ変更となりました。
対象項目対象行には変更ございません。
計画
数量/売上→O列
粗利→Q列
実績
数量/売上→AA列
粗利→AC列
数量/売上達成率→AM列
粗利達成率→AN列
お忙しいかと存じますが、何卒ご教授願います。
![「【修正希望】【マクロ】元データから別表の」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/542439599_5def92cc6a7c3/M.png)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.8
- 回答日時:
追伸:
No7のmodule3の修正点
2.項目対応の変更点は、下記プロシージャ内のマクロの説明です。
Private Sub sheet_rank(ByVal ws1 As Worksheet, ByVal wbook As Workbook, ByVal trow As Long)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.7
- 回答日時:
module3の修正点
1.ひと月ごとの列数がC列から23列→41列へ変更。
Private Function get_src_col_by_index(ByVal mx As Long)
をmodule1と同様に修正する。
2.項目対応の変更点
----------------------------------------
'全月分繰り返す
For i = 0 To UBound(month_flg)
'当該月インデックスの月が到来済みなら処理する
If month_flg(i) = True Then
src_col = get_src_col_by_index(i)
wk_col = get_work_col_by_index(i)
If IsNumeric(src_ws.Cells(trow, src_col + 6).Value) = False Then・・・・①
MsgBox ("数量不正")
src_ws.Cells(trow, src_col + 6).Select・・・・①
Application.Calculation = xlCalculationAutomatic
End
End If
'拠点
If src_ws.Range("A1").Value = 1 Then
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col).Value = src_name 'エリア/支店
Else
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 1).Value = src_name '店舗/課・営業所
End If
'20191001修正開始
'20191002修正開始
If src_ws.Cells(trow, src_col + 3).Value <> "" Then・・・・②
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 2).Value = _
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 2).Value + src_ws.Cells(trow, src_col + 3).Value '数量計画・・・②
End If
If src_ws.Cells(trow, src_col + 6).Value <> "" Then・・・・③
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 3).Value = _
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 3).Value + src_ws.Cells(trow, src_col + 6).Value '数量実績・・・③
End If
'達成率数量
kei_val = ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 2).Value
jis_val = ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 3).Value
If kei_val = 0 Then
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 4).Value = ""
Else
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 4).Value = jis_val / kei_val
End If
'20191002修正終了
'20191001修正終了
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 5).Value = src_ws.Range("A1").Value 'A1の値(ソートに使用)
'対計画達成/未達成額 追加開始20190311
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 6).Value = _
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 3).Value - ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 2).Value
'対計画達成/未達成額 追加終了20190311
End If
Next
----------------------------------------
上記の①~③の行について、以下の変更を行います。
① 2か所 6→24
② 2か所 3→12
③ 2か所 6→24
(尚、①と③は同じ項目ですが、①はチェック用に使用しているので分けています)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.6
- 回答日時:
すみません。
変更箇所の①~⑤の説明の追記です。①を例にとると
If IsNumeric(src_ws.Cells(176, src_col + 21).Value) = False Then・・・・・・・①
とありますが、
src_wsは元データのシートを示しています。したがって、src_ws.Cells(xxx,yyy)の個所が修正対象です。(xxx,yyyは数式又は数値)
src_ws.がないのは元データのシートではないので修正対象にはなりません。
src_ws.Cells(176, src_col + 21)は
元データシートの176行目のsrc_col + 21列を参照しています。
src_colは処理対象の月によって変わりますが、その月の開始の列を示しています。
従って、src_col + 21は、その月の粗利達成率を参照していることになります。
よってこの21を37に変えればよいことになります。
module3,5も同じですが、変更対象になるのは、src_ws.Cells(xxx,yyy)の個所のみであるということに留意してください。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.5
- 回答日時:
今までは、私のほうで修正し、動作確認後、マクロをリリースしていましたが、
今回は、変更内容を理解するために、あなたのほうで、マクロを直接修正する形で作業を進めたいと思います。
module1、3,5の順に、動作確認しながら、進めてください。
module1の修正点
1.ひと月ごとの列数がC列から23列→41列へ変更。への対応箇所
'月のindexから先頭のカラム位置を取得(元データファイルのシート)
Private Function get_src_col_by_index(ByVal mx As Long)
get_src_col_by_index = 3 + mx * 23・・・・・・①
End Function
①の23を41に修正する。
2.各項目の変更対応箇所
Private Sub sheet_rank(ByVal mode As Long, ByVal ws1 As Worksheet, ByVal ws2 As Worksheet, ByVal wbook As Workbook)
の以下の個所を変更
-----------------------------------------
'全月分繰り返す
For i = 0 To UBound(month_flg)
'当該月インデックスの月が到来済みなら処理する
If month_flg(i) = True Then
src_col = get_src_col_by_index(i)
wk_col = get_work_col_by_index(i)
If IsNumeric(src_ws.Cells(176, src_col + 21).Value) = False Then・・・・・・・①
MsgBox ("経常利益達成率不正")
src_ws.Cells(176, src_col + 21).Select・・・・①
Application.Calculation = xlCalculationAutomatic
End
End If
'20191001修正開始
'経常利益
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col).Value = src_name 'エリア/支店
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 1).Value = _
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 1).Value + src_ws.Cells(176, src_col + 5).Value '粗利計画・・・・②
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 2).Value = _
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 2).Value + src_ws.Cells(176, src_col + 8).Value '粗利実績・・・③
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 3).Value = _
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 3).Value + src_ws.Cells(176, src_col + 21).Value '達成率対計画金額・・・④
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 4).Value = _
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 4).Value + src_ws.Cells(176, src_col + 22).Value '伸長額対計画金額・・・⑤
If IsNumeric(src_ws.Cells(181, src_col + 21).Value) = False Then・・・①
MsgBox ("収支 合計達成率不正")
src_ws.Cells(181, src_col + 21).Select・・・①
Application.Calculation = xlCalculationAutomatic
End
End If
'収支 合計
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col).Value = src_name 'エリア/支店
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 1).Value = _
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 1).Value + src_ws.Cells(181, src_col + 5).Value '粗利計画・・・②
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 2).Value = _
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 2).Value + src_ws.Cells(181, src_col + 8).Value '粗利実績・・・③
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 3).Value = _
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 3).Value + src_ws.Cells(181, src_col + 21).Value '達成率対計画金額・・・④
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 4).Value = _
ThisWorkbook.Worksheets(wn2).Cells(wk_row, wk_col + 4).Value + src_ws.Cells(181, src_col + 22).Value '伸長額対計画金額・・・⑤
'20191001修正終了
End If
Next
----------------------------------------
上記の①~⑤の行について、以下の変更を行います。
① 4か所 21→37
② 2か所 5→14
③ 2か所 8→26
④ 2か所 21→37
⑤ 2か所 22→38
(尚、①と④は同じ項目ですが、①はチェック用に使用しているので分けています)
以上となります。
ご教授頂きましてありがとうございます。
ご丁寧にご説明頂きありがとうございます。
ただ、経常利益達成率が元データ空白な為、エラーになってしまいます。。。
解決方法はございますでしょうか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.4
- 回答日時:
変更後のレイアウトです。
同様に変更対象のセルの相対番号ですが、
12,14、24,26、36、37、38となります。(10月分)
11月分は、AR列が0になります。
変更前と変更後のセル位置を相対番号に注目すると以下のようになります。
計画
数量/売上 F列(3)→O列(12)
粗利 H列(5)→Q列(14)
実績
数量/売上 I列(6)→AA列(24)
粗利 K列(8)→AC列(26)
数量/売上達成率 W列(20)→AM列(36)
粗利達成率 X列(21)→AN列(37)
伸長額対計画金額 Y列(22)→AO列(38)
カッコ内の数値が相対番号です。修正個所は、この数値が元になります。
![「【修正希望】【マクロ】元データから別表の」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/d/106271_5df0718bb5e61/M.png)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.3
- 回答日時:
変更前のレイアウトですが、添付画像を参照ください。
変更対象の項目名が赤のセルになっています。
上記の項目対応の相対番号が2行目の数値に示されています。
計画
数量/売上 F列(3)
粗利 H列(5)
実績
数量/売上 I列(6)
粗利 K列(8)
数量/売上達成率 W列(20)
粗利達成率 X列(21)
伸長額対計画金額 Y列(22)
この3,5,6,8,20,21,22は
C列を0として、順に振った番号です。(10月分)
11月になれば、Z列が0になります。
この数値を覚えておいてください。
画像が小さくなるので、変更後の画像は次回の投稿になります。
![「【修正希望】【マクロ】元データから別表の」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/106271_5df06ff204b5a/M.png)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.2
- 回答日時:
一点、追記です。
下記項目も集計対象になっています。ご確認ください。module1(最優秀拠点部署)で使用しています。
伸長額対前年金額 Y列→AQ列
ご返信頂きましてありがとうございます。
>一点、追記です。下記項目も集計対象になっています。ご確認ください。
>module1(最優秀拠点部署)で使用しています。
>伸長額対前年金額 Y列→AQ列
→前回、お伝えした内容が間違っていたようです。
大変失礼いたしました。
正しくは伸長額対計画金額 Y列→AO列となります。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 判定結果に応じて〇印(図形)をつけるマクロ 4 2022/10/30 11:22
- Excel(エクセル) GETPIVOTDATAにかんして 1 2022/04/20 21:03
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) Excel 知恵を下さい。 下記表は、例です。本来の表のデータ量は、1000件以上あります… A列: 9 2023/01/13 12:08
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関係演算子が無効です。
-
9iのSQL:1999構文を使用した外...
-
GROUP BYを行った後に結合した...
-
SELECTで1件のみ取得するには?
-
Excelで、改行がある場合の条件...
-
Oracleでの文字列連結サイズの上限
-
SQL文で右から1文字だけ削除す...
-
Accessで別テーブルの値をフォ...
-
ADO VBA 実行時エラー3021
-
SQLの書き方(チェックボックス)
-
実績累計の求め方と意味を教え...
-
OracleのSQL*PLUSで、デー...
-
アクセスでレポートの1印刷内...
-
Accessでのレコード存在チェック
-
CREATE テーブルでの複数外部...
-
oracleのinsert select性能
-
チェックボックスの項目をDBにi...
-
Access終了時の最適化が失敗?
-
キーが同じを複数行を1行にま...
-
select insertで複数テーブルか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関係演算子が無効です。
-
SQL 外部結合についての質問
-
Excel VBAで、Averageの範囲を...
-
TO_CHAR関数における外部結合に...
-
同じテーブルをLEFT JOIN
-
自己相関サブクエリと自己結合...
-
LEFT JOINの条件式で=’’を使用...
-
Informixで文字列を数値型に
-
内部結合する時の結合条件と制...
-
Access 結合条件設定方法
-
T-SQL 動的に優先順ごとにデー...
-
WHERE句の書き方
-
エラー「無効な識別子です」
-
エクセルVBAでSUM関数の位置を...
-
Pro*CでVARCHAR2項目の検索
-
エラー2「無効な識別子です」
-
Oracle SQL 結合の手法について
-
【修正希望】【マクロ】元デー...
-
SQLで後方の文字列を置換する方法
-
range表記をcells表記にしたい
おすすめ情報
tatsu99様
おはようございます。
やはり確認しましたが、数字が入っております。
第一四半期におきましては達成/未達成額の列がFJ列となります。