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列
お忙しいかと存じますが、何卒ご教授願います。
No.9ベストアンサー
- 回答日時:
module5の修正点
1.ひと月ごとの列数がC列から23列→41列へ変更。
Private Function get_src_col_by_index(ByVal mx As Long)
をmodule1と同様に修正する。
2.項目対応の変更点
下記プロシージャの以下の個所を修正します。
Private Sub sheet_rank(ByVal ws1 As Worksheet, ByVal wbook As Workbook, ByVal trow As Long)
----------------------------------------
'全月分繰り返す
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 + 5).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 + 5).Value '売上粗利計画・・・②
End If
If src_ws.Cells(trow, src_col + 8).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 + 8).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
If kei_val < 0 Then
If jis_val < kei_val Then
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 4).Value = Abs(jis_val) / kei_val
Else
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 4).Value = jis_val / Abs(kei_val) + 2
End If
Else
ThisWorkbook.Worksheets(wn1).Cells(wk_row, wk_col + 4).Value = jis_val / kei_val
End If
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
End If
--------------------------------------
上記の①~③の行について、以下の変更を行います。
① 2か所 6→24
② 2か所 5→14
③ 2か所 8→26
以上で、完了です。
No.17
- 回答日時:
>第一四半期におきましては達成/未達成額の列がFJ列となります。
これは、あなたの提示された図の10月の伸長額対計画金額(AO列)のことですね。
そうであれば、第一四半期ではFH列(相対位置38)ではないでしょうか。
お世話になっております。
ご返信が遅くなり、申し訳ありません。
№5でご教授頂きましたように22→38に修正したので、ご教授頂いた通りになっておりました。
また、再度検証しませいたところ、やはり月、Qによって金額が違っているようでした。。。
お騒がせして申し訳ございません。
再度元データを精査した上で検証したいと思います。
お手数をおかけして申し訳ございません。
また、別途要望がございまして、どのようにしたらよいかお知恵をお借りできましたら幸いです。
決まりましたら、ご質問させて頂きます。
お忙しい中、ご教授頂きましてありがとうございます。
No.16
- 回答日時:
到来月と設定される月の関係です。
参考までに。到来月 設定される月
10 10,1Q,上半期、年間
11 10,11,1Q,上半期、年間
12 10,11,12,1Q,上半期、年間
1 10,11,12,1Q,1,2Q,上半期、年間
2 10,11,12,1Q,1,2,2Q,上半期、年間
3 10,11,12,1Q,1,2,3,2Q,上半期、年間
4 10,11,12,1Q,1,2,3,2Q,上半期、4,3Q,下半期,年間
5 10,11,12,1Q,1,2,3,2Q,上半期、4,5,3Q,下半期,年間
6 10,11,12,1Q,1,2,3,2Q,上半期、4,5,6,3Q,下半期,年間
7 10,11,12,1Q,1,2,3,2Q,上半期、4,5,6,3Q,7,4Q,下半期,年間
8 10,11,12,1Q,1,2,3,2Q,上半期、4,5,6,3Q,7,8,4Q,下半期,年間
9 10,11,12,1Q,1,2,3,2Q,上半期、4,5,6,3Q,7,8,9,4Q,下半期,年間
No.14
- 回答日時:
>module1なのですが、ひと月分の達成/未達成額は表示されるのですが
>第一、第二、第三四半期、上半期、下半期、年間の部分が0になってしまいます。
元データの第一、第二、第三四半期、上半期、下半期、年間の達成/未達成額が設定されていないと思われます。
元データに上記項目が設定されていないと、0になります。
以前の処理でも、同じことが起こると思いますが、いかがでしょうか。
お世話になっております。
わたしも元データ確認したのですが
元データには入っておりました。
明日、もう一度確認させていただきまして、ご報告させていただきます。
もし、元データに入っているのに表示されないのはわたしの修正に誤りがある可能性がありますでしょうか?
No.13
- 回答日時:
修正個所は以下のようになります。
If src_ws.Cells(176, src_col + 21).Value <> "" And 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 '粗利実績
If src_ws.Cells(176, src_col + 21).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(176, src_col + 21).Value '達成率対計画金額
End If・・・②終了
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 src_ws.Cells(181, src_col + 21).Value <> "" And 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 '粗利実績
If src_ws.Cells(181, src_col + 21).Value <> "" Then・・・④開始
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 '達成率対計画金額
End If・・・④終了
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 '伸長額対計画金額
①,②、③、④になります。
(21は37に置き換えてください)
①、③は1行のみです。
①、③は、空白以外でかつ数字でないならエラーにするようにしました。(よって空白はえらーにならない)
②、④は、空白のデータを加算するとエラーになるので、空白でないなら加算するようにしました。
・・・①などの「・・・①」の文字は実際にはマクロにはつけないでください。
②、④は、if文なのでインデントを付けます。(投稿時、空白が削除されるので見た目ではインデントがついていませんが)
②は
If src_ws.Cells(176, src_col + 21).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(176, src_col + 21).Value '達成率対計画金額
End If・・・②終了
のように、コーディングしてください。(意図的に全角空白を入れています。全角空白があるので、この個所はコピペしないでください。)
他の列も空白があれば、エラーになる可能性がありますが、とりあえず、まずは、AN列の対応のみ行います。
本件、諸々ご教授頂きましてありがとうございます。
理解しながら私のほうで修正いたしましたが
module1なのですが、ひと月分の達成/未達成額は表示されるのですが
第一、第二、第三四半期、上半期、下半期、年間の部分が0になってしまいます。
何が考えられるでしょうか?
No.12
- 回答日時:
>1.メッセージボックスに「経常利益達成率不正」と表示されます。
AN列に空白が設定されている可能性があります。
ANへ
=IFERROR(xxx,"")のように
""(ダブルクート2つ)で空白を設定すると、エラーになります。
マクロで対応するのは可能ですが、このエラーは、今までは、出ていなかったはずです。
今までの粗利達成率算出の計算式が変わったのでしょうか。
今までのX列の式と、今回のAN列は、同じ考え方であれば、””の空白にはならないはずなのですが。
お仰る通り、=IF(ISERROR(AA6/O6),"",AA6/O6)の数式が入っております。
以前は値で貼り付けられていたので、その際修正頂いたように認識しております。
回避できるように修正頂くことは可能でしょうか?
お手数をおかけして申し訳ありませんが、よろしくお願いいたします。
No.11
- 回答日時:
エラーは
1.メッセージボックスに「経常利益達成率不正」又は「収支 合計達成率不正」がでるエラーですか?
2.それとも、途中で止まってしまうエラーですか?
1なら、AN列が不正の意味です。
「AM列のみ集計項目によって、空白になっていたり数式が入っていたりまちまちになっている為」
とありますが、AM列はこの時点で、参照していないのでエラーになりません。
まず、どちらのエラーなのかを確認させてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー2「無効な識別子です」
-
SQL 外部結合についての質問
-
関係演算子が無効です。
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
oracleの分割delete
-
Accessで別テーブルの値をフォ...
-
SQL文で右から1文字だけ削除す...
-
select insertで複数テーブルか...
-
OracleのSQL*PLUSで、デー...
-
GROUP BYを使ったSELECT文の総...
-
Excelでセルの書式設定を使用し...
-
ファイル書込みで一行もしくは...
-
最新の日付とその金額をクエリ...
-
使うべきでない文字。
-
select句副問い合わせ 値の個...
-
外部結合とor条件混在の記述方法
-
oracleのinsert select性能
-
MS-DOSコマンドプロンプトを途...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関係演算子が無効です。
-
SQL 外部結合についての質問
-
エラー2「無効な識別子です」
-
Informixで文字列を数値型に
-
エラー「無効な識別子です」
-
2つのSQL(Access)の結果[時刻,...
-
LEFT JOINの条件式で=’’を使用...
-
TO_CHAR関数における外部結合に...
-
INNER JOINとwhere句
-
自己相関サブクエリと自己結合...
-
文字のゼロ埋め
-
Excel VBAで、Averageの範囲を...
-
エクセルVBAでSUM関数の位置を...
-
【修正希望】【マクロ】元デー...
-
同じテーブルをLEFT JOIN
-
こういう場合のSQLの書き方。
-
外部結合について
-
結合SQLに関して
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
おすすめ情報
tatsu99様
おはようございます。
やはり確認しましたが、数字が入っております。
第一四半期におきましては達成/未達成額の列がFJ列となります。