|
マクロ初心者ですが、業務で必要なため勉強中です。
今回、必要なマクロを作成しておりまして、途中工程までは出来ているのですが、この先につまづき、ご教授頂けませんでしょうか?
過去の質問等を見てつなぎ合わせてみたのですが、上手くいかず・・。
動いても思うように動かないためお助けいただきたく、お願いします。
マクロブックシート3〜5に各支店のデータをまとめたものがあります。
まずはマクロブックシート3(A支店)の値と集計表ブックのシート2の各項目と一致するか検索し(例.りんご、バナナ等商品)、一致したらマクロシート3内もう一項目の文字を判別(例.青森、秋田等)し、その文字によりシート3シートに記載された数値(「1」個)を集計表ブックシート2の各欄へ足して集計するというものです。
具体的にはマクロブックのシート3のC列の値と、集計表のF6:F115範囲で項目の一致を検索、一致後さらにシート3のG列の値により、Iに記入の数値を集計表の指定欄へ足していきます。集計表は更新していきますので、空データではなく、初期値に+していきます。(初期値0の場合もあります)
また、マクロブックのデータのC列の値は重複する文字がありますが、各1件として検索となります。(りんご、りんご、バナナ等)
青森、秋田等の部分は空白の場合もあります。
集計シートのF6〜F115の間は空欄もあります。(間に合計するセル等入れているため)
検索が一致しなければ、隣に×等をつけて、後でソートして別シートにコピーしようと思っています。
同じようにシート4(B支店)、シート5も集計していきますが、集計先のセルはそれぞれ異なります。
とりあえず、シート3用のマクロを記載して、シート4とシート5分もコピーしセルの値等を変えて、下記マクロを記載してみましたが、正しく動きません。
正しく検索して集計できているもの、出来ないものもあり。
シート3はまだいいのですが、シート4やシート5についてはコピーして手直ししたのですが全然動きません。
何がいけないのか不明のため、ご教授頂けませんでしょうか。
もっと良い方法があれば、組みなおして頂いて全く問題ありません。
記載方法がわからず、マッチ検索ではなく、find検索がいい等、手掛かりがあると助かります。
Sub データ集計()
Set sh2 = Workbooks("集計表.xlsm").Worksheets(2)
'A支店のデータを集計
'マクロブックの3シート目のA列最終行を取得
mxr1 = ThisWorkbook.Worksheets(3).Range("A" & Rows.Count).End(xlUp).Row
For k = 2 To mxr1
'マクロブックの3シート目のC2セルから最終行までを集計票ブックのF6からF115のセルに記載の値と一致させる
MyR = Application.Match(ThisWorkbook.Worksheets(3).Cells(k, "C").Value, sh2.Range("F6:F115"), 0)
'一致したら
If IsNumeric(MyR) Then
'myRに5を足した値
MyR2 = MyR + 5
Count = ThisWorkbook.Worksheets(3).Cells(k, "I").Value
'マクロブックの3シート目のG列が「青森」であったら
If ThisWorkbook.Worksheets(3).Cells(k, "G").Value = "青森" Then
'集計表ブックのシート2のL列に初期入力値にマクロブックのシート3のIの値を足して入力
sh2.Cells(MyR2, "L").Value = sh2.Cells(MyR2, "L").Value + Count
'マクロブックの3シート目のG列が「秋田」であったら
ElseIf ThisWorkbook.Worksheets(3).Cells(k, "G").Value = "秋田" Then
'集計表ブックのシート2のP列に初期入力値にマクロブックのシート3のIの値を足して入力
sh2.Cells(MyR2, "P").Value = sh2.Cells(MyR2, "P").Value + Count
'マクロブックの3シート目のG列が「空白」であったら
'A列の値を1シート目に転記する
ElseIf ThisWorkbook.Worksheets(3).Cells(k, "G").Value = " " Then
Set pastsaki = ThisWorkbook.Worksheets(1).Range("A1").Offset(BK)
pastsaki.Value = ThisWorkbook.Worksheets(3).Cells(k, "A").Value
'データがなければ×をつける
Else
ThisWorkbook.Worksheets(3).Cells(k, "j").Value = "X"
End If
End If
Next
'B支店
mxr2 = ThisWorkbook.Worksheets(3).Range("A" & Rows.Count).End(xlUp).Row
For L = 2 To mxr2
'マクロブックの3シート目のC2セルから最終行までを集計票ブックのF6からF115のセルに記載の値と一致させる
MyR3 = Application.Match(ThisWorkbook.Worksheets(4).Cells(L, "C").Value, sh2.Range("F6:F115"), 0)
'一致したら
If IsNumeric(MyR3) Then
'myRに5を足した値
MyR4 = MyR3 + 5
Count = ThisWorkbook.Worksheets(4).Cells(L, "I").Value
'マクロブックの4シート目のG列が「青森」であったら
If ThisWorkbook.Worksheets(4).Cells(L, "G").Value = "青森" Then
'集計表ブックのシート2のM列に初期入力値にマクロブックのシート3のIの値を足して入力
sh2.Cells(MyR4, "M").Value = sh2.Cells(MyR4, "M").Value + Count
'マクロブックの3シート目のG列が「秋田」であったら
'ElseIf 〜続く
End Sub
|
|