Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5266 / 76732 ←次へ | 前へ→

【77079】検索して集計するマクロ
質問  yumeyume  - 15/5/14(木) 20:54 -

引用なし
パスワード
   マクロ初心者ですが、業務で必要なため勉強中です。
今回、必要なマクロを作成しておりまして、途中工程までは出来ているのですが、この先につまづき、ご教授頂けませんでしょうか?
過去の質問等を見てつなぎ合わせてみたのですが、上手くいかず・・。
動いても思うように動かないためお助けいただきたく、お願いします。

マクロブックシート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

258 hits

【77079】検索して集計するマクロ yumeyume 15/5/14(木) 20:54 質問[未読]
【77080】Re:検索して集計するマクロ kanabun 15/5/14(木) 23:42 発言[未読]
【77081】Re:検索して集計するマクロ kanabun 15/5/15(金) 0:15 発言[未読]
【77082】Re:検索して集計するマクロ yumeyume 15/5/15(金) 13:53 質問[未読]
【77084】Re:検索して集計するマクロ kanabun 15/5/15(金) 15:09 発言[未読]
【77090】Re:検索して集計するマクロ yumeyume 15/5/15(金) 20:04 お礼[未読]
【77091】Re:検索して集計するマクロ kanabun 15/5/15(金) 20:34 発言[未読]
【77092】Re:検索して集計するマクロ yumeyume 15/5/15(金) 21:18 お礼[未読]
【77083】Re:検索して集計するマクロ yumeyume 15/5/15(金) 14:20 質問[未読]

5266 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free