1

Excel マクロのセルに vlookup を追加しようとしていますが、関数の引数も範囲関数の引数も取得できないようです。

コードの最後の行の書き方を教えてください。

            RangeStartRow = 2
            RangeStartColumn = 1 + 11 + (3 * (AverageSheetIndex - RowCounter - 1))
            RangeEndRow = LastCol
            RangeEndColumn = 2 + 11 + (3 * (AverageSheetIndex - RowCounter - 1))
            ActiveCell.Formula = WorksheetFunction.VLookup(ActiveWorkSheet.Cells(1, c), ActiveSheet.range(Cells(RangeStartRow, RangeStartColumn), Cells(RangeEndRow, RangeEndColumn)), 2, False)

コードはまっすぐだと思います (最初の 4 行の値は気にしないでください)。アクティブ セルで vlookup を実行して、上記で宣言された 4 つの値の範囲で cell(1,c) を探したいと思います。

コードの最後の行を書き直す方法を教えてください。

前もって感謝します。

4

1 に答える 1

2

ActiveCell.Formulaセルに入れたい数式を表す文字列が必要です。

 ActiveCell.Formula = "=vlookup(" & activecell.offset(0,1).address & ....

私は通常、シートで数式を手動で作成することから始め、次にデバッグ ウィンドウに入力します (C3 の数式の場合)。

? range("C3").formulaR1C1

次に、必要に応じて数式を編集し、それをコードにコピーします。formulaR1C1 を使用すると、文字の取得を回避できます: ActiveCell が $C$4 である場合、

"=D4" is equivalent to "=RC[1]"
"=$D$4" is equivalent to "=R4C4"

MyCol の列文字を本当に取得したい場合は、次を使用できます。

split(cells(1,MyCol).address,"$")(1)

式を作り直すのに役立つように、デバッグ ウィンドウから呼び出される次のサブルーチンを使用することがあります。

Sub RngToVba(src As Range)
'Helps to write VBA code that will reproduce formula from existing sheet.
'writes (to the debug window) the VBA code to re-create the formulae in given range
'by Patrick Honorez - www.idevlop.com
'usage: from debug window, type RngToVba [L14:R14]
'                            or RngToVba range("L14:R14")
'then copy generated code to your module
    Dim c As Range
    For Each c In src
        Debug.Print "range(""" & c.Address & """).formula = """ & _
                    Replace(c.Formula, """", """""") & """"""
    Next c
End Sub
于 2010-12-23T10:57:32.393 に答える