質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

13768閲覧

マクロ VBA 別ブックA列の値と一致した時、任意のセルに値を転記(VLookup)で転記が変

marutoki

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/01/17 08:42

編集2017/01/17 15:08

またお世話になります。
教えてください。
下記コードで、一致⇒抽出⇒転記まではできたのですが、
各列で一致していない値が入った行まで値が入ってしまいます。
なぜなのかさっぱり分かりません。

※一致させる値は13ケタのJANコードです。

【追記】
もう少し詳細に症状を・・・
結局何が原因か分かりません・・・#N/Aとかは出ないんですが。
On Error Resume Next
で片方の検索列が空白だった場合飛ばすようにしています。
実際途中までは空白なのですが、
例えば、
300行目が一致、E,F,G列に値が入る。
次に、
310行目が一致、E,G,F列に値が入る。

なのですが、301~309行目に300行で転記した情報が入ってしまいます。
つまり、一度一致したら次の一致が見つかるまで転記を繰り返す状態になっているようです。
エラー時の処理としてVLookupコードの下に
On Error GoTo 0

とか入れると「型が一致しません」と出ます。

あと、別ブックにはフィルターやマクロが入っていますが、影響を及ぼすことはありますか?

Option Explicit Sub 更新ボタン() Application.ScreenUpdating = False Dim i As Long Dim xlBook As Workbook Dim size As String Dim Shohin As String Dim strColor As String Worksheets(2).Activate Worksheets(2).Range("E5:G10004").ClearContents Set xlBook = Workbooks.Open(Filename:=ThisWorkbook.Path & "\商品Master(マクロ).xlsm") '★要変更★ On Error Resume Next For i = 5 To 10004 'サイズを抽出してF列へ size = Application.VLookup(ThisWorkbook.Worksheets(2).Range("C" & i).Value, xlBook.Worksheets("商品Master").Range("A6:G10000"), 6, False) ThisWorkbook.Worksheets(2).Range("F" & i).Value = StrConv(size, vbWide) '全角にして転記 '品名を抽出してG列へ Shohin = Application.VLookup(ThisWorkbook.Worksheets(2).Range("C" & i).Value, xlBook.Worksheets("商品Master").Range("A6:G10000"), 5, False) ThisWorkbook.Worksheets(2).Range("G" & i).Value = StrConv(Shohin, vbWide) '全角にして転記 '商品+カラー抽出して結合してE列へ Shohin = Application.VLookup(ThisWorkbook.Worksheets(2).Range("C" & i).Value, xlBook.Worksheets("商品Master").Range("A6:G10000"), 5, False) strColor = Application.VLookup(ThisWorkbook.Worksheets(2).Range("C" & i).Value, xlBook.Worksheets("商品Master").Range("A6:G10000"), 7, False) ThisWorkbook.Worksheets(2).Range("E" & i).Value = StrConv(Shohin & " " & strColor, vbWide) Next i xlBook.Close Application.ScreenUpdating = True MsgBox ("完了") End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koji9412

2017/01/17 09:13

失礼します。今回の質問を初めてみた人は前回の質問を見た上で回答しなければなりません。その上で別途回答します
marutoki

2017/01/17 14:17

言葉足らずですみません、前回の問題は解決し、無事稼働していたのですが、急に症状が現れて困っているところです。(症状は追記しました)
guest

回答2

0

On Error Resume Next
こちらを削除すれば、値は入りません。

しかし、このような書き方ですが、型が違うとエラーが出るかもしれません。

引用
http://www.relief.jp/itnote/archives/excel-vba-error-trap-vlookup-function.php

VBA

1Sub VLookupのサンプル_エラー回避_1() 2 Dim tbl As Range 3 Dim key As Long 4 Dim ret As String 5 6 Set tbl = Range("D1:E5") 7 key = Range("A1").Value 8 9 On Error Resume Next 10 ret = WorksheetFunction.VLookup(key, tbl, 2, False) 11 If Err.Number <> 0 Then 12 ret = "該当なし" 13 End If 14 On Error GoTo 0 15 16 Range("B1").Value = ret 17 18End Sub

エラー処理も考慮にいれてコードを書くようにしましょう。
また蛇足ですがShohin = ・・・ の部分が2回あるので1つは不要です。

投稿2017/01/17 09:17

編集2017/01/17 09:18
koji9412

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marutoki

2017/01/17 14:22

ありがとうございます、蛇足の件、お恥ずかしい限りです。 エラー処理後がいまいち分からずいたのですが、IF文を使えばよかったのですね。 しかし試したのですが、今度は「型が一致しません」と出てきてしまいます。 今回の症状は何が原因なのか、取り込み先のブックにフィルターやマクロが入っているのって関係しますでしょうか?
guest

0

自己解決

う~ん、とりあえず型が一致しないので、(Valiantにしても)

Option Explicitを外して
Dim size
Dim Shohin
Dim strColor

にしたら治りました!
全然解決してませんが(-_-;)
一応症状は治りました。

投稿2017/01/18 01:15

marutoki

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問