2017-08-11 18 views
1

私は簡単な検索に基づいたプログラムを用意しています。私は= LEFT関数を組み込んでvlookupの結果の最初の2文字を返す方法があるのだろうかと思っていました。Excel-VBAからvlookup結果のLEFTを使用して戻る

ub Store_Lookup_left_test() 
Dim rw As Long, x As Range 
Dim extwbk As Workbook, twb As Workbook 

Set twb = ThisWorkbook 
Set extwbk = Workbooks.Open("H:\****\****\Master Store Info.xlsm") 
Set x = extwbk.Worksheets("Info Sheet").Range("A1:C999999") 

With twb.Sheets("Sheet1") 

    For rw = 1 To .Cells(Rows.Count, 1).End(xlUp).Row 
     .Cells(rw, 10) = Application.VLookup(.Cells(rw, 1).Value2, x, 3, False) 
    Next rw 
End With 

だから=Left(vlookup(a1,A1:C1,3,0),2)に類推して、私は .cells(rw, 10) = application.left(application.vlookup(.cells(rw, 1).Value2, x, 3, False),2)のような類似した何かを行うことができますか?

現時点でVLOOKUP結果は

英国光、または

アイルランドの光であり、私はそれが

英国、Irの

答えて

1

になりたいですあなただけの必要はありません:

.cells(rw, 10) = Left(application.vlookup(.cells(rw, 1).Value2, x, 3, False),2) 

これは一致がなかった場合、それはLeftエラーを返しますので、あなただけのVBAで直接Left機能を使用できますが、あなたは何をvlookupリターンをチェックする必要がありLeft VBA function

+0

はちょうどしようと、それは、(RW、10)=左(Application.VLookup(.Cells(RW、1).Value2 .Cellsのために "型の不一致が実行時エラー '13'" 戻ってきましたx、3、False)、2)私はドキュメントを読んだ。多くのありがとう。別の変数を導入して文字列として宣言する必要がありますか? – user8449681

+0

これはおそらく、空のセル結果がルックアップから戻ってくることを意味します。 まず、Set x = extwbk.Worksheets( "Info Sheet")を変更します。範囲( "A1:C999999") - 空のセルを持っていない範囲を使用します。 – Lobsterpants

+0

変数にapplication.vlookup(.cells(rw、1).Value2、x、3、False)を割り当て、結果が左になる前に空であることを確認してください。 – Lobsterpants

2

に建て使用しています使えない。

' Get vlookup result as variant so no error occurs if not string 
Dim lookupresult As Variant 
lookupresult = Application.VLookup(.Cells(rw, 1).Value2, x, 3, False) 
' Check if vlookup returned an error (no match found) 
If IsError(lookupresult) Then 
    MsgBox "Error with vlookup, no match found" 
Else 
    ' Get Left of string, up to 2 characters. 
    .Cells(rw, 10) = Left(lookupresult, 2) 
End If 
+0

空になったときにlookupresultのチェックを追加すると、これはあなたが望むものです - それ以外の理由でtpeが間違っていないかぎりですか? – Lobsterpants

+0

Minの使用は冗長です( 'Left(lookupresult、2)'は空の文字列に対して正しい結果を返します)。 VLOOKUPが何も見つけられず、 'Variant/Error'を返すときに' Type Mismatch'が前の行で生成されます。 – BrakNicku

+0

あなたは正しいです@BrakNicku、私は今実際の問題を扱う私の答えを修正しました – Wolfie

関連する問題