0

ドロップダウン メニューからオプションを選択すると、データが収集されて計算され、アイテムのパッケージを生産するための総コストが返されます。私が望むのは、このドロップダウンのすべての組み合わせを循環し、総単価を別のセルに自動的に返すことです。

別のワークシートにすべての可能なドロップダウン選択を入力して、大規模なグリッドを既に作成しました。これはこれの 1 つの反復の例ですが、明らかにこれはループする必要があり、セル参照は移動に合わせてオフセットする必要があります。

  • 「Cost Calculator」というタイトルのワークシートの E8 のセル値は、「Costs」というタイトルのワークシートの G1 のセル値 = である必要があります。
  • 「Cost Calculator」というタイトルのワークシートの E9 のセル値は、「Costs」というタイトルのワークシートの A2 のセル値 = である必要があります。
  • 「Cost Calculator」というタイトルのワークシートの E10 のセル値は、「Costs」というタイトルのワークシートの B2 のセル値 = である必要があります。
  • 「Cost Calculator」というタイトルのワークシートの E11 のセル値は、「Costs」というタイトルのワークシートの C2 のセル値 = である必要があります。
  • 「Cost Calculator」というタイトルのワークシートの E12 のセル値は、「Costs」というタイトルのワークシートの D2 のセル値 = である必要があります。
  • 「Cost calculator」というタイトルのワークシートの E13 のセル値は、「Costs」というタイトルのワークシートの E2 のセル値 = である必要があります。
  • 次に、"Cost Calculator" という名前のワークシートのセル E22 の計算結果をコピーし、値を "Costs" という名前のワークシートの G2 に貼り付ける必要があります。

次に、2 つの変更でまったく同じことが発生する必要があります。

  • 「Cost Calculator」というタイトルのワークシートの E8 のセル値は、「Costs」というタイトルのワークシートの H1 のセル値 (1 列分オフセット) である必要があります。

「Cost Calculator」というタイトルのワークシートのセル E22 の計算結果をコピーし、「Costs」というタイトルのワークシートの H2 に貼り付けた値を 1 列分オフセットする必要があります。

これは、同じ 2 つのオフセットで 21 回 (最初の時間を含む) 発生する必要があります。

その場合は、行ごとにマクロを実行できれば幸いですが、行を下に移動して、理想的な空白のセルに到達するまで実行を続けることもできれば幸いです。それが発生した場合、21 回の後に行を下に移動する必要があり、次のようになります。

  • 「Cost Calculator」というタイトルのワークシートの E8 のセル値は、「Costs」というタイトルのワークシートの G1 のセル値に等しい必要があります (これは数量であるため、常に行 1 になります)。
  • 「Cost Calculator」というタイトルのワークシートの E9 のセル値は、「Costs」というタイトルのワークシートの A3 のセル値 = である必要があります。
  • 「Cost Calculator」というタイトルのワークシートの E10 のセル値は、「Costs」というタイトルのワークシートの B3 のセル値 = である必要があります。
  • 「Cost Calculator」というタイトルのワークシートの E11 のセル値は、「Costs」というタイトルのワークシートの C3 のセル値 = である必要があります。
  • 「Cost Calculator」というタイトルのワークシートの E12 のセル値は、「Costs」というタイトルのワークシートの D3 のセル値 = である必要があります。
  • 「Cost calculator」というタイトルのワークシートの E13 のセル値は、「Costs」というタイトルのワークシートの E3 のセル値 = である必要があります。
  • 次に、「Cost Calculator」という名前のワークシートのセル E22 の計算結果をコピーし、値を「Costs」という名前のワークシートの G3 に貼り付ける必要があります。

その後、前と同じオフセットを 21 回ループします。

これが Excel で可能かどうかはわかりませんが、ここにいる誰かが支援できるかどうかはわかりません。私が尋ねていることについて質問がある場合はお知らせください。できる限り説明するように努めました。うまくいけば、アイデアが伝えられ、シートのレイアウトを再フォーマットしてコードに対応する必要がある場合も同様に実行できます。

4

1 に答える 1

0

これがまさにあなたが探しているものかどうか確信が持てません。

その後、21回前と同じオフセット。そしてループ。

次のことを行うコードをいくつか作成しました

「Cost Calculator」というワークシートの E8 のセル値 = 「Costs」というワークシートの G1 のセル値 「Cost Calculator」というワークシートの E9 のセル値 = ワークシートの A2 のセル値「Costs」というタイトルのワークシートの E10 のセル値 = 「Costs」というワークシートの B2 のセル値 「Cost Calculator」というワークシートの E11 のセル値 = のセル値「Costs」というワークシートの C2 「Cost Calculator」というワークシートの E12 のセル値 = 「Costs」というワークシートの D2 のセル値 「Cost calculator」というワークシートの E13 のセル値= 「Costs」というワークシートの E2 のセル値 次に、「Cost Calculator」というワークシートのセル E22 の計算結果をコピーし、値を「Costs」というワークシートの G2 に貼り付ける必要があります。

次に、2 つの変更でまったく同じことが発生する必要があります。「Cost Calculator」というタイトルのワークシートの E8 のセル値は、「Costs」というタイトルのワークシートの H1 のセル値 (1 列オフセット) である必要があり、「Cost Calculator」というタイトルのワークシートのセル E22 の計算結果は、コピーして、「Costs」というタイトルのワークシートの H2 に貼り付けた値を、再び 1 列分オフセットします。

Sub Calc_Loop()
Dim lngRow As Long
Dim intOS As Integer
Dim intCol As Integer

  Sheets("Cost Calculator").Select
  lngRow = 2
  Do
    For intOS = 1 To 5
      'Set Cells E9 - E13 = to Cells A-E on row lngRow on Sheet Costs
      Cells(8 + intOS, 5) = Sheets("Costs").Cells(lngRow, intOS)
    Next intOS
    'Set E8 to G1 on Sheet Costs
    Cells(8, 5) = Sheets("Costs").Cells(1, 7)
    'Set G on row lngRow on Sheet Costs to E22
    Sheets("Costs").Cells(lngRow, 7) = Cells(22, 5)

    'Set E8 to H1 on Sheet Costs
    Cells(8, 5) = Sheets("Costs").Cells(1, 8)
    'Set H on row lngRow on Sheet Costs to E22
    Sheets("Costs").Cells(lngRow, 8) = Cells(22, 5)

    lngRow = lngRow + 1
  Loop Until IsEmpty(Sheets("Costs").Cells(lngRow, 1))
End Sub

したがって、これはシート「コスト」をループし、
* A2 から計算された出力に対して G2 を挿入 - G1 を使用する E2 および
* A2 から計算された出力に対して H2 を挿入 - H1 を使用して E2
* A3 から計算された出力に対して G3 を挿入 - E3 G1 を使用し、
* A3 から計算された出力に H3 を挿入 - H1 を使用した E3 ...

これはあなたが必要とするものですか?

于 2010-01-25T23:21:32.347 に答える