2つの項目(サイズ、カラー)が一致したときに別シートから数量をコピーし加算していくVBAを作りたいです。
カラーの項目は複数ある色の中の1つに該当すれば良いという判定を付けたいです。
■シート名:注文データ
サイズ カラー 数量
----------------------------------------
S 白 100
L 白 100
XL 白 100
S 黒 100
M 黒 100
S 青 100
M 青 100
XL 青 100
■シート名:外注表
サイズ カラー 数量
------------------------------------------------
S 白
M 白
L 白
XL 白
S 黒
M 黒
L 黒
XL 黒
S 黒 青
M 黒 青
L 黒 青
XL 黒 青
マクロを実行すると・・・注文データの数量を外注表の該当行へ加算
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
■シート名:外注表
サイズ カラー 数量
------------------------------------------------
S 白 100
M 白 -
L 白 100
XL 白 100
S 黒 100
M 黒 100
L 黒 -
XL 黒 -
S 黒 青 200
M 黒 青 200
L 黒 青 -
XL 黒 青 100
どうか宜しくお願いします。
No.3ベストアンサー
- 回答日時:
No.2です。
そこまでややこしくする必要なかったですね。
Sub megu_2()
Dim myDic As Object
Dim r As Range, st As String
Dim v
Set myDic = CreateObject("Scripting.Dictionary")
With Worksheets("注文データ")
For Each r In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
st = r.Value & "_" & r.Offset(, 1).Value
If Not myDic.Exists(st) Then myDic.Add st, 0
myDic(st) = myDic(st) + r.Offset(, 2).Value
Next
End With
With Worksheets("外注表")
.Range("C2", .Cells(Rows.Count, 3)).ClearContents ' 数量の列の値を事前に消去
For Each r In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
For Each v In Split(r.Offset(, 1), " ")
st = r.Value & "_" & v
If myDic.Exists(st) Then _
r.Offset(, 2).Value = r.Offset(, 2).Value + Val(myDic(st))
Next
r.Offset(, 2).Value = IIf(r.Offset(, 2).Value = "", "-", r.Offset(, 2).Value)
Next
End With
Set myDic = Nothing
End Sub
差し替えて下さい。
No.2
- 回答日時:
No.1です。
Sub megu()
Dim myDic As Object
Dim r As Range, st As String, s As String
Dim v
Set myDic = CreateObject("Scripting.Dictionary")
With Worksheets("注文データ")
For Each r In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
st = r.Value & "_" & r.Offset(, 1).Value
If Not myDic.Exists(st) Then myDic.Add st, CreateObject("Scripting.Dictionary")
s = r.Offset(, 1).Value
If Not myDic(st).Exists(s) Then myDic(st).Add s, 0
myDic(st)(s) = myDic(st)(s) + r.Offset(, 2).Value
Next
End With
With Worksheets("外注表")
.Range("C2", .Cells(Rows.Count, 3)).ClearContents ' 数量の列の値を事前に消去
For Each r In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
For Each v In Split(r.Offset(, 1), " ")
st = r.Value & "_" & v
If myDic.Exists(st) Then
If myDic(st).Exists(v) Then _
r.Offset(, 2).Value = r.Offset(, 2).Value + Val(myDic(st)(v))
End If
Next
r.Offset(, 2).Value = IIf(r.Offset(, 2).Value = "", "-", r.Offset(, 2).Value)
Next
End With
Set myDic = Nothing
End Sub
ご検証願います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルから、パワーポイントのスライドを複数作成する。 1 2022/07/08 09:40
- Windows 7 エクセルで重複データから抽出したい 2 2022/05/18 23:31
- プリンタ・スキャナー PDF印刷 一枚だけカラーにする方法 1 2023/02/07 09:30
- 国産車 ジムニーの色で悩み中です!XL購入予定で白にしようと思ったらパールなし(XCのみがパールありのホワイ 3 2022/04/15 20:21
- その他(ホビー) SG230オートチュナ接続方法(アマチュア無線) 1 2022/05/18 12:23
- 数学 場合の数、確率 49 (東大文系過去問) 7 2023/08/25 15:10
- その他(アニメ・マンガ・特撮) 好きな色は? 8 2023/03/04 22:32
- バス・高速バス・夜行バス 神姫バスとJRバスの時刻表です。 赤青黒の色分けで 赤青は土日祝、平日だとわかるのですが 運行日が空 1 2022/09/11 03:05
- 心理学 反感を招く。 2 2023/01/15 09:15
- 輸入車 森林の雪の中で走る車は何色が映えますか? 4 2022/08/14 23:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
社用車ってなぜ何処もシルバー...
-
男ですが、ニーハイソックスを...
-
3路スイッチって0.1.3って差し...
-
真夏に黒のスーツは暑いですか?
-
葬式にセーターとカーデガンど...
-
入学式、卒業式の服装について
-
シアーシャツって何色が1番着回...
-
バイトに受からないんです。(5...
-
黒のズボンに合う上の服
-
赤のTシャツが持ってるんですが...
-
女子高校生、中学生に聞きます...
-
ユニクロのブラトップとかって…
-
女性のベビードールやスリップ
-
ナメクジの粘液の落し方について
-
レギンスって暑くないのですか
-
洗濯機のパルセーターの中心が...
-
テニスラケットのグリップテー...
-
「靴下」・・購入後、そのまま...
-
乾燥剤(シリカゲル)の色
-
靴下を履く時、右足から履く?...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3路スイッチって0.1.3って差し...
-
男ですが、ニーハイソックスを...
-
社用車ってなぜ何処もシルバー...
-
ガンメタルとは、どんな色ですか?
-
pcの電源コネクタmolexの+-はど...
-
電源ファン(2ピン)交換、しか...
-
黒のマオカラーを通夜・お葬式...
-
iPhone12ー64KのKとは何ですか?
-
真夏に黒のスーツは暑いですか?
-
ドラマ リーガルハイ(前作含...
-
背景色、黒と白、目にやさしい...
-
黒の下着は娼婦、悪女、のイメ...
-
色名の表記にルールはありますか?
-
キャノンのプリンター950iのC...
-
黒髪に合うキャップの色って何...
-
バイトに受からないんです。(5...
-
黒のズボンに合う上の服
-
黒のセーターを持っているので...
-
ウィンブレを来て出かけたいん...
-
アルバイトやパートで汚れても...
おすすめ情報