0

VBA for Excel(通常はJavaとC ++をコーディングします)を使用するのはこれが初めてであり、開始するためのヒントをいくつか入手したいと思っていました。

ドルの結果を提供するために、次の条件のリストを実行する大規模なデータセットのマクロを作成したいと思います。

  1. 列Aからユニットサイズを収集します(可能な値0〜8)
  2. 列Bからシングルユニットかファミリーユニットかを判断します(シングル-1、ファミリー-0)
  3. 列Cからユーティリティコードを収集します(評価される製品のタイプのコード)

この情報から、ユニットサイズ、ユニットのタイプ、および問題の製品を考慮して光熱費を決定する新しい値が行に配置されます。ネストされた条件またはネストされた条件をループで使用することを考えSelect Caseましたが、全体的にはかなり迷っています。

4

2 に答える 2

0

回答ありがとうございました。VBAforExcelを理解するのに役立ちました。可能な値をテーブルに入れてから、Index関数内でMatch関数を使用して、適切な値を選択することになりました。

于 2012-08-14T19:43:00.610 に答える
0

ワークシートの数式でうまくいくようですが、計算内容がわからないとわかりません。以下は、標準モジュールに配置するユーザー定義関数(UDF)です。次のようなセルから呼び出します。

=computecosts(A2,B2,C2)

明らかに、コードはデータのレイアウト方法と計算内容に応じて変わります。

Public Function ComputeCosts(rSize As Range, rFamily As Range, rCode As Range) As Double

    Dim lSizeFactor As Long
    Dim lFamilyFactor As Long
    Dim dCodeFactor As Double
    Dim rFound As Range

    Const lFAMILY As Long = 0

    'Size factor is a function of 0-8, namely adding 1
    lSizeFactor = rSize.Value + 1

    'Family factor is computed in code
    If rFamily.Value = lFAMILY Then
        lFamilyFactor = 3
    Else
        lFamilyFactor = 2
    End If

    'Code factor is looked up in a different sheet
    Set rFound = Worksheets("Sheet2").Columns(1).Cells.Find(rCode.Value, , xlValues, xlWhole)
    If Not rFound Is Nothing Then
        dCodeFactor = rFound.Offset(0, 1).Value
    End If

    'do the math
    ComputeCosts = lSizeFactor * lFamilyFactor * dCodeFactor

End Function
于 2012-08-13T20:57:50.663 に答える