2016-10-04 16 views
-2

vlookupのマクロスクリプトのヘルプが必要です。私は、テーブル配列の情報をvlookupスクリプトにハードコードしたいと思う。今の問題は、vlookup関数の行を置くと、すべての行が実際に配列の表からの情報であるにもかかわらず、最後の行でしか機能しないということです。VBAのVLOOKUPマクロ

マクロを実行すると最初のマクロ行が実行され、1行目に何も一致しない場合は2行目に移動するようにするには、これが役に立ちます。 3行目も同じです。前もって感謝します。

Sub Macro7() 

    Range("L1").Select 

    Range("L1").FormulaR1C1 = "=VLOOKUP(RC[-1],{1603101,""BFF""},2,FALSE)" 
    Range("L1").FormulaR1C1 = "=VLOOKUP(RC[-1],{1603102,""DELTA""},2,FALSE)" 
    Range("L1").FormulaR1C1 = "=VLOOKUP(RC[-1],{1608063,""BIST""},2,FALSE)" 

    Lastrow = ActiveSheet.UsedRange.Rows.Count 

    Range("L1").Autofill Destination:=Range("L1:L" & Lastrow) 

End Sub 
+2

マクロは1行目から開始し、2行目、次に1行目に移動しますしかし、それは同じセルを上書きし続けるので、最後には3番目のvlookupしか表示されません。とにかく、3つの異なるvlookupを1つのセルにどのように置くと思いますか?あなたのコードをステップ実行(F8)してみてください。そうすれば、そこにあるすべてが実行されます。 – vacip

+0

はい、正確に一致するまで上書きし続けます。私の意図は、現在、各セルがvlookup関数のすべてのリストを実行して、合計1kの情報とハードコードが必要な情報を見つけることができるようにすることです。上のコードでは、セルは直前の3を直接実行し、NAを与えます。あなたのコメントのために – mhalwi

答えて

1

この試してみてください:あなたは、むしろ数式を作成するよりも、計算そのものを行うには、次のコードのようなものを使用することができVBAコードを持って喜んでいた場合は

Sub Macro7() 
    With ActiveSheet 
     .Range("L1:L" & .UsedRange.Rows.Count).FormulaR1C1 = "=VLOOKUP(RC[-1],{1603101,""BFF"";1603102,""DELTA"";1608063,""BIST""},2,FALSE)" 
    End With 
End Sub 

を。マクロを再度呼び出す必要なく、データが変更されるたびにマクロが更新されるという利点があります。

Sub Macro7() 
    Dim r As Long 
    Dim v as String 
    With ActiveSheet 
     For r = 1 to Range("K" & .Rows.Count).End(xlUp).Row 
      Select Case .Cells(r, "K").Value 
       Case 1603101: v = "BFF" 
       Case 1603102: v = "DELTA" 
       Case 1608063: v = "BIST" 
       Case Else: v = "UNKNOWN!!" 
      End Select 
      .Cells(r, "L").Value = v 
     Next 
    End With 
End Sub 
+0

ありがとう。私はこれを前に試してみました。問題は今、私は1kプラスの情報を持っていますが、私はvlookupでハードコードしたいと思っていますし、マクロを使って私にthtをさせることはできません。だから、代わりに別の情報を持つvlookupのリストを作成しようとしています。すべての列の意図は、最初にvlookup関数のすべてのリストを通過してから次のセルに移動します。これを行うための任意のアイデア? – mhalwi

+0

@mhalwi - Excelの範囲内にあるすべてのVLookupキー/値を設定し、通常はVLookupを使用するのはなぜですか? – YowE3K

+0

私は毎回私がデータの配列をテーブルの別のExcelシートを開く必要はありませんを引っ張っているので、私はそれをハードコアしたい。 2行目で値が見つかったものの、3行目を通過すると、3行目の値が検索された値ではなく値が置き換えられます。 – mhalwi