[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでVlookUPをつくりましたがエラー404がでます。』(パンジービオラ)
VBAに挑戦しています。
別のシート(マスタ)に登録してあるコードを入力用シートにてコードを抽出したいと考えています。
マスタシート:A列に名前 B列にコードを入力してあります。
入力用シート:A列にコードを入力したく、B列に名前が入っています。
この場合下記のようなものを作ってみましたが、404のエラーが出てしまいました。
どこが違うか教えていただけるとありがたいです。
よろしくお願いします。
Sub A_コードをつける()
Dim SerchKey As Range '検索値 Dim SerchRange As Range '検索範囲 Dim OutputRange As Range '出力範囲 Dim i As Long
Set SerchKey = Worksheets("入力用").Range("B2:B1000") Set SerchRange = Worksheets("マスタ").Range("A2:B500") Set OutputRange = Worksheets("入力用").Range("A2:A1000")
Application.ScreenUpdating = False
For i = 1 To SerchKey.Rows.Count OutputRange(i, 1) = WorksheetFunction.VLookup(SerchKey(i, 1), SerchRange, 2, False) Next
Application.ScreenUpdating = True End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
デバッグの基本はステップ実行し、変数内容を調べることから。 人にやらせるのではなく、自分でやるものです。 そうしないと、どの行でエラーになったのかも説明できないでしょう?
そして、エラーコードは404ですか? 元データがどこまで入力されているかに関係なく、999回ループしているので、空欄検索しようとして、1004のエラーになりそうですが。
また、入力用データが999行あるのに、マスタデータは499行しかないので、見つからない場合も想定すべき。
(???) 2020/09/28(月) 14:21
VlookUPを使用して の間違いでした。
また404ではなく、400エラーだったです。
ただ、一行ずつマクロを実行しましたら、確かに「1004」エラーになりました。
空欄検索のためのエラーということなので、改めて調べてみます。
ありがとうございました。
(パンジービオラ) 2020/09/28(月) 14:50
Sub さんぷる() With Worksheets("入力用").Range("A2:A1000") .Formula = "=VLOOKUP(B2,マスタ!$A$2:$B$500,2,FALSE)" .Value = .Value End With End Sub
(もこな2 ) 2020/09/29(火) 08:06
ご連絡遅くなりまして申し訳ございません。
ご回答ありがとうございました。
早速実行してみましたところこの方法でもできるんですね。
シンプルですごいです。
ただ、A列にコードが表示されましたが、B列は毎回行数が変わるので、
B列がない部分はA列が#N/Aになってしまいました。
表示が出ない方法はあるのでしょうか。
(パンジービオラ) 2020/10/09(金) 15:15
Sub B列最終行までにしてみる() Dim 最終行 As Long
With Worksheets("入力用") 最終行 = .Cells(.Rows.Count, "B").End(xlUp).Rows If 最終行 < 2 Then Exit Sub
With .Range("A2:A" & 最終行) .Formula = "=VLOOKUP(B2,マスタ!$A$2:$B$500,2,FALSE)" .Value = .Value End With End With End Sub '--------------------------------------------------------------- Sub エラー値をクリアしてみる() With Worksheets("入力用").Range("A2:A1000") On Error Resume Next .SpecialCells(xlCellTypeFormulas, 16).ClearContents On Error GoTo 0
.Formula = "=VLOOKUP(B2,マスタ!$A$2:$B$500,2,FALSE)" .Value = .Value End With End Sub '--------------------------------------------------------------- Sub エラー値にならない数式にしてみる() With Worksheets("入力用").Range("A2:A1000") .Formula = "=IFERROR(VLOOKUP(B2,マスタ!$A$2:$B$500,2,FALSE),"""")" .Value = .Value End With End Sub
(もこな2) 2020/10/13(火) 14:45
(もこな2) 2020/10/14(水) 09:02
再度のご回答ありがとうございました。
VBAはきちんと理解できていないので、ネットの力を借りてばかりです。
そのため、応用がきかず。
今回は「 エラー値にならない数式にしてみる」をコピーさせていただき、
他のVLOOKUPを使用している部分に当てはめてみようと思います。
いろいろ式を考えてくださりありがとうございました。
(パンジービオラ) 2020/10/15(木) 15:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.