2

私はいくつかの変数を定義し、それらをvlookup式に入れることを望んでいました。私が達成しようとしていることの簡単な例を以下に概説します。ただし、「438」エラーメッセージが表示され続けます。

変数のない元のvlookupと、変数を含むvlookupが機能していません。任意の入力をいただければ幸いです。私は変数が正しく定義されていると思いますが、それは私が式でそれらを呼んでいる方法と関係があると思います。

Sub Macro1()

Dim Lookupcolumn As Range

Dim columnletter_start As String

Dim columnletter_End As String

columnletter_start = ActiveCell.offfet(0, 1).Value

columnletter_End = ActiveCell.offfet(0, 2).Value

Set Lookupcolumn = Sheets("Pricing Analysis").Cells.Find(What:="Cusip", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)

'ActiveCell.FormulaR1C1 = "=VLOOKUP(R[1]C[-8],'CS Primeview'!C[-6]:C[-4],3,FALSE)"

ActiveCell.FormulaR1C1 = "=VLOOKUP(Lookupcolumn,'CS Primeview'columnletter_start:columnletter_End,3,FALSE)"


End Sub
4

2 に答える 2

3

問題は、実際には、Excel.WorksheetFunction.構造を介してVBAコードで任意のExcel関数を使用し、変数を使用して正しい結果を取得できることです。ただし、コードでは、の参照としてRangeオブジェクトActiveCell.FormulaR1C1 = "=VLOOKUP(Lookupcolumn,'CS Primeview'columnletter_start:columnletter_End,3,FALSE)"を使用しようとしますが、Excelは、引数として、またはNamedRegionとしてのみ有効な参照として認識します。VLOOKUPA1

A1解決策として、コードで-similar引数を生成してみてください。列全体A:Aに行きます。幸運を!

PS私が気付いたもう1つのこと:'CS Primeview'columnletter_start:columnletter_End-この部分では、参照前の感嘆符と、部分を連結するための二重引用符を見逃したようです。つまり、"'CS Primeview'!" & columnletter_start & ":" & columnletter_End正しいはずです。

于 2013-01-15T12:56:22.090 に答える
0

以下では、可変セル参照を定義し、それを.formulaの方法で読み取り可能な形式に変換できます。これは、変数を使用してvlookupを作成する簡単な方法です。これは、数式をExcelで記述し、それらをコピーしてコードに貼り付け、ルックアップ値を変更するだけでよいためです。これは、インデックス/一致に対しても完全に機能します。

lookup_value = Cells(defined_row,defined_column).Address(False,False)
lookup_value = Replace(lookup_value, "", "")

ActiveCell.Formula = "VLOOKUP($" & lookup_value & ",'Sheet1'!$A:$B,2,0)"
于 2017-06-02T12:16:56.887 に答える