1

テーブルを渡したいExcel 2007用のUDFを作成し、UDFでそのテーブルの一部を参照しています。たとえば、「Stock」というテーブルは次のようになります。

名前 費用 在庫あり

テディベア £10 10

ロリポップ 20p 1000

在庫に残っているすべてのアイテムの総コストを計算したいUDFがあります(実際の例ははるかに複雑で、非常に複雑な式がないと実際には実行できません)

理想的には、UDF の構文は次のようになります。

TOTALPRICE(Stock)

私が理解できることから、UDFには署名があることを意味します

Function TOTALPRICE(table As Range) As Variant

私が問題を抱えているのは、テーブルの列を参照してそれらを反復する方法です。理想的には、列ヘッダーを参照して実行できるようにしたいと考えています (つまり、テーブル [コスト] のようなもの)。

4

2 に答える 2

1

これは非常に基本的なものですが (しゃれは意図していません)、あなたが説明したことを実行します。大きなテーブルの場合、内部でマクロ関数とワークシートの間を行ったり来たりしているため、遅くなる可能性があり、そのようなアクティビティが追加されます。

1 行のヘッダーと 1 列の名前があると想定しています (したがって、For ループ変数は 2 から始まります)。

必要になる可能性のあるものはすべてあります。それらは、別の質問またはこの質問の別のラウンドのために取っておくことができます。

関数は「バリアント」を返すことに注意してください...

Public Function TotalPrice(table As Range) As Variant

Dim row As Long, col As Long
Dim total As Double

    For row = 2 To table.Rows.Count
        For col = 2 To table.Columns.Count
            TotalPrice = TotalPrice + table.Cells(row, col) * table.Cells(row, col + 1)
        Next
    Next

End Function
于 2008-10-10T11:58:57.753 に答える
0

注: Excel 2007 を持っていないので、Web 上の MSDN ドキュメントを使用してこれを作成しようとしています。
範囲に ListColumns コレクションがあるように見えます

したがって、構文は table.ListColumns("Cost") のようになります。
これは機能しますか?

于 2008-10-10T17:12:53.640 に答える