2017-07-26 9 views
0

私は、大規模なデータセットとその生活費インデックスを持っています。ウェブサイトからテーブルをコピーして四半期ごとに更新する必要があります。Vbaは前回のセル値を保持するか、vlookupが返されない場合はスキップします。

更新されたインデックスを調べ、古いものを置き換えるためにマクロを作成しましたが、一部のエントリは更新されたものに含まれていないか、含まれていません。それは#N/Aでインデックスセルを残しますが、むしろ古い値をそのまま残します。

'Varibles and format 
Dim last As Integer 
Dim Ending As Integer 
Dim examin As Variant 
Ending = Cells(Rows.Count, "A").End(xlUp).Row 
last = Range("G3").SpecialCells(xlCellTypeLastCell).Row 
Range("F3:F" & last).ClearContents 
Range("I3:M" & last).ClearContents 

'Find & Replace country names with correct from 
Cells.Replace What:="United States", Replacement:="USA", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 
Cells.Replace What:="United Kingdom", Replacement:="England", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 
Cells.Replace What:="United Arab Emirates", Replacement:="United_Arab_Emirates", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 
Cells.Replace What:="Dominican Republic", Replacement:="Dominican_Republic", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 
Cells.Replace What:="South Africa", Replacement:="South_Africa", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 
Cells.Replace What:="Czech Republic", Replacement:="Czech_Republic", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 
Cells.Replace What:="Costa Rica", Replacement:="Costa_Rica", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 

'Vlookup updated index 
For x = 2 To Ending 
Range("D" & x).Value = Application.VLookup(Range("A" & x), Range("G3:H" & last), 2, False) 
Next x 
End Sub 

は、私が「どのように以前のExcelのセルの値を維持する場合は、エラーとVLOOKUP・リターン」この質問に読んで、それはオプションではありませんでしたが、別の方法があるかもしれないが。

私はそれを実行した後のようです。

Index Update

答えて

2
For x = 2 To Ending 
    If isnumeric(Application.VLookup(Range("A" & x), Range("G3:H" & last), 2, False)) then 
    Range("D" & x).Value = Application.VLookup(Range("A" & x), Range("G3:H" & last), 2, False) 
    End if 
    Next x 
End Sub 

、それが働いた

+0

ことを試してみてくださいありがとうございました! –

関連する問題