2016-10-03 12 views
0

私はVBAを初めて使い、VBAコードに書き込んだvlookupの式を列内の各セルをループするVBAコードに変換しようとしています。 vlookupはif文の一部であり、それ自身でうまく動作します。私が直面している問題は、どのようにしてセルをどのように調べて、ループ全体に一般化できるかをvlookup関数に伝える方法がわからないことです。式には、以下のExcel VBA:ルックアップとVlookup

= IF(K114 <> ""、K114、VLOOKUP($ A114、COMP $ A $ 1!:$のD $ 136,2、FALSE))である

はここで私が持っているものですVBA

Sub Ranking() 

Dim cell As Range, rng As Range 
Set rng = Range("K2:K120") 

For Each cell In rng 
    If cell.Value <> "" Then 
     cell.Offset(0, 1).Value = cell.Value 
    Else: cell.Offset(0, 1).Value = WorksheetFunction.VLookup(HELP HERE,ThisWorkbook.Sheets(2).Range("A1:D136"), 2, 0) 
    End If 
Next 
End Sub 

は、私はそれがで見ているのと同じ行の列A内のテキストを参照するために、それを伝えるために、「ここに役立つ」置く場所に置くことがよく分からない。この場合、私もわからないんだけどこの状況のた​​めにループする正しい方法ですか?どんな提案も大歓迎です。本当にありがとう!

+0

に到達するために戻って左に10列で、現在のセルのオフセットで行うことができますA列に列Kにおける現在のセルから行く必要があることを意味しますこれのためのVBAコードまたはワークシートの式の作業ができますか? –

+0

残念ながら、それははるかに大きなVBAコードの一部であり、数式にすることはできません。私はちょうど私の思考プロセスを導くために最初に数式を書いた。 – Ashley

答えて

1

「ヘルプはこちら」では、K114 for A114を交換する数式を見てください。それはあなたが必要ですあなたが列A

Sub Ranking() 

Dim cell As Range, rng As Range 
Set rng = Range("K2:K120") 

For Each cell In rng 
    If cell.Value <> "" Then 
     cell.Offset(0, 1).Value = cell.Value 
    Else 
     cell.Offset(0, 1).Value = WorksheetFunction.VLookup(cell.Offset(0, -10).Value, ThisWorkbook.Sheets(2).Range("A1:D136"), 2, 0) 
    End If 
Next 
End Sub 
+0

それはうまくいきました、ありがとうTeylyn! – Ashley