
はじめまして。
中小企業の工場で働いている者です。
一月の工場の仕事の負荷を把握したのですが、
何百部品もあり、マンパワーでは把握できそうにありません。
そこで、エクセル(2010)のリストよりVBAを使って解決したいのですが、
VBA初心者の私にはプログラムを作れそうにありません。
誰かお力添え頂けませんでしょうか。
●リスト1に部品毎に負荷(作業時間h)が分かっています。
A B C
1 部品名 注番 負荷(作業時間)
2 部品ア イ 2
3 部品ウ 0.06
4 部品 0.005
・ ・ ・
・ ・ ・
・ ・ ・
●リスト2にその月の受注部品の一覧があります。
A B C
1 部品名 注番 負荷(作業時間)
2 部品ア イ
3 部品カ キ
4 部品
・ ・
・ ・
マクロを実行すると、
リスト2の部品ア、注番イを、リスト1から検索し、その行のC列の負荷(作業時間)を
リスト2の部品ア、注番イのC列に張り付ける。
次は、3行目、次は4行目その次は・・・と繰り返すプログラムを組みたいと思っております。
新規の部品は、リスト2にあって、リスト1にない場合もありますので、
その場合は、-で表示したいと思っております。
誰か、このVBA初心者にお力添えください。
よろしくお願いいたします。
ちなみに、ここまでは、できています。
Public Sub 負荷一覧作成()
Dim sh1, sh2 As Worksheet
Dim maxRow1 As Long
Dim maxRow2 As Long
Dim row As Long
Dim dicT As Object '連想配列(部品名の記憶)
Dim key As Variant
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set sh1 = Worksheets("Sheet1") ' リスト1のシート名
Set sh2 = Worksheets("Sheet2") ' リスト2のシート名
maxRow1 = sh1.Cells(Rows.Count, 1).End(xlUp).row ' 最終行を求める
maxRow2 = sh2.Cells(Rows.Count, 1).End(xlUp).row ' 最終行を求める
'部品一覧を作成し、部品ごとの時間を記憶する
For row = 2 To maxRow1
key = sh1.Cells(row, 1).Value
dicT(key) = sh1.Cells(row, 2).Value
Next
'部品毎の時間を検索し設定する
For row = 2 To maxRow2
key = sh2.Cells(row, 1).Value
'部品一覧にこの部品があれば、その時間を設定
If dicT.exists(key) = True Then
sh2.Cells(row, 2).Value = dicT(key)
Else
'なければ、"-"を設定する
sh2.Cells(row, 2).Value = "-"
End If
Next
MsgBox ("処理完了")
End Sub

No.2ベストアンサー
- 回答日時:
以下のようにしてください。
--------------------------------------------------------------
Public Sub 負荷一覧作成()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxRow1 As Long
Dim maxRow2 As Long
Dim wrow As Long
Dim dicT As Object '連想配列(部品名の記憶)
Dim key As Variant
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set sh1 = Worksheets("Sheet1") ' リスト1のシート名
Set sh2 = Worksheets("Sheet2") ' リスト2のシート名
maxRow1 = sh1.Cells(Rows.Count, 1).End(xlUp).row ' 最終行を求める
maxRow2 = sh2.Cells(Rows.Count, 1).End(xlUp).row ' 最終行を求める
'部品一覧を作成し、部品名+注番毎の時間を記憶する
For wrow = 2 To maxRow1
key = sh1.Cells(wrow, 1).Value & "|" & sh1.Cells(wrow, 2).Value
dicT(key) = sh1.Cells(wrow, 3).Value
Next
'部品名+注番毎の時間を検索し設定する
For wrow = 2 To maxRow2
key = sh2.Cells(wrow, 1).Value & "|" & sh2.Cells(wrow, 2).Value
'部品一覧にこの部品があれば、その時間を設定
If dicT.exists(key) = True Then
sh2.Cells(wrow, 3).Value = dicT(key)
Else
'なければ、"-"を設定する
sh2.Cells(wrow, 3).Value = "-"
End If
Next
MsgBox ("処理完了")
End Sub
No.1
- 回答日時:
Dim ですが、確かに変数を , で繋げて宣言できますが、変数ごとに型を書かないと、variant 型での宣言になります。
Dim sh1, sh2 As Worksheet の場合は sh1 は variant 型宣言しています。
Public Sub 負荷一覧作成()
Dim sh1 as worksheet, sh2 As Worksheet
Dim maxRow1 As Long, maxRow2 As Long, RowIndex As Long, SearchIndex as Long
Dim PartsNameArray() as variant, PartNumberArray() as Variant
Set sh1 = Worksheets("Sheet1") ' リスト1のシート名
Set sh2 = Worksheets("Sheet2") ' リスト2のシート名
maxRow1 = sh1.Cells(Rows.Count, 1).End(xlUp).row ' 最終行を求める
maxRow2 = sh2.Cells(Rows.Count, 1).End(xlUp).row ' 最終行を求める
PartsNameArray() = Range(sh1.cells(2, 1), sh1.cells(maxrow1, 1))
PartsNumberArray() = Range(sh1.cells(2, 2), sh1.cells(maxrow1, 2))
For RowIndex = 2 to maxRow2
For SearchIndex = 2 to maxRw1
if sh1.cells(SearchIndex, 1) = sh2.cells(RowIndex, 1) and sh1.cells(SearchIndex, 2) = sh2.cells(RowIndex, 2) then
sh2.cells(RowIndex, 3) = sh1.cells(SearchIndex)
exit for
endif
next searchindex
next RowIndex
MsgBox ("処理完了")
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAで2~4列目の3行目...
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
エクセル関数>参照ファイル名...
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
エクセル;相対パスを絶対パスへ...
-
複数のマクロボタンをまとめて...
-
【Excel VBA】マクロでExcel自...
-
エクセルで、「いいね」のよう...
-
エクセルでマクロ(Excel 4.0)...
-
エクセル マクロ名にブック名...
-
Excelのマクロでボタンを押すと...
-
マクロで最終行を取得してコピ...
-
エクセルファイルを値でのみし...
-
エクセルの、記録を終了したマ...
-
エクセルの表を複数枚印刷した...
-
EXcelのマクロで相対パスでファ...
-
マクロの保存先、開いてるすべ...
-
Excel VBAでオートフィルタで抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAで2~4列目の3行目...
-
WPSOffice_マクロの有効化について
-
VBAで保存しないで閉じると空の...
-
Excel マクロの編集がグレーに...
-
エクセル関数>参照ファイル名...
-
エクセル ボタンに設定したマク...
-
複数のマクロボタンをまとめて...
-
【Excel VBA】マクロでExcel自...
-
マクロの保存先、開いてるすべ...
-
Excelのマクロでボタンを押すと...
-
エクセル マクロ名にブック名...
-
Excelマクロで、稼働中のマクロ...
-
エクセルの、記録を終了したマ...
-
エクセルで、「いいね」のよう...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルのvbaにて thisworkboo...
-
EXcelのマクロで相対パスでファ...
-
エクセルの表を複数枚印刷した...
-
エクセル;相対パスを絶対パスへ...
-
【Excel】マクロの保存先について
おすすめ情報