2016-12-13 13 views
2

今、このタイプのコードを使用して、列Oにあるものを調べて、列Nに何を入力するかを決定します。データは機密情報なので、それは文字と数字です。それは正常に動作しますが、VBAコードでケースをハードコーディングする代わりに、外部のワークブックにあるテーブルを参照するために、数千のケースと値を挿入する必要があるためです。外部ブック内 外部ブック内のExcel参照テーブルを使用したVBAの照会

Sub ChangeTest() 
    Dim LastRow As Long 
    Dim i As Long 
     LastRow = Range("O" & Rows.Count).End(xlUp).Row 
     For i = 2 To LastRow 
     Select Case Range("O" & i) 
      Case "A", "B", "C" 
      Range("N" & i) = "1" 
      Case "D","E","F" 
      Range("N" & i) = "2" 
      Case "G","H","I" 
      Range("N" & i) = "3" 
     End Select 
     Next i 
End Sub 

、入ることにある数(1、2、3、等)を有する場合(A、B、Cなど)および列Cを含有するカラムD元のワークブックの列N。

参照表を組み込むために私が今編集したコードが、まったく異なっている必要があるかどうか分かりません。

+0

おそらくこれが役立ちます:https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_other/vba-vlookup-of-external-workbook/68df21ca-40bb-4b7c-bc77-a0cff6771d4d – Bookeater

+0

ウィル外部のワークブックはすでに開いていますか? –

+0

いいえ、そうはなりません。 – Robby

答えて

0

理由だけでループを実行しているのではなく、示唆?:

Sub ChangeTest() 
Dim LastRow As Long 
Dim Referance_Workbook As Workbook 
Dim Referance_Tab As Worksheet 
Dim Rng As Range 


Set Referance_Workbook = Workbooks.Open("[Referance workbook path]") 
Set Referance_Tab = Referance_Workbook.Sheets("[Referance tab within referance workbook]") 
Referance_Workbook.Close SaveChanges:=False 

LastRow = Range("O" & Rows.Count).End(xlUp).Row 
Set Rng = Range("N2:N" & LastRow) 
Rng.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-11],'[Source Workbook.xlsx]Sheet1'!C1:C2,2,0),""No in refrence table"")" 


End Sub 

これはあなたの列Aで検索、ブック/タブを参照すると、列B

に結果を探しんあなたのタイトルのようなVLOOKUPを実行しません
+0

私は正しい変更を加えたと思うが、Set Referance_Tab値に対して「subscript out of range」というエラーが出る。タブがRDataと呼ばれる場合は、その行の角括弧内にあるものではないでしょうか?このような? 'Set Referance_Tab = Referance_Workbook.Sheets(" [RData] ")' – Robby

+0

いいえ、 'Set Referance_Tab = Referance_Workbook.Sheets(" RData ")' – Jeremy

+0

@Robbyはあなたのために働いています(それはすべきです) – Jeremy

関連する問題