簡體   English   中英

遍歷一系列單元格,將數據輸入其他單元格(下拉選擇)並返回計算結果

[英]Loop through a range of cells, inputting data into other cells (drop-down selections) and return the result of calculations

我有一個內置於Excel 2003中的計算器,您可以在其中從下拉菜單中選擇選項,然后收集並計算數據,以返回產生該項目包的總成本。 我想循環瀏覽此下拉列表的所有組合,然后將總單位成本自動返回到另一個單元格。

我已經創建了一個巨大的網格,並在單獨的工作表中輸入了所有可能的下拉菜單。 這是此操作的一個迭代示例,但是顯然,這需要循環,並且單元格引用需要隨移動而偏移。

  • 標題為“成本計算器”的工作表的E8的單元格值需要=標題為“成本”的工作表的G1的單元格值
  • 標題為“成本計算器”的工作表的E9的單元格值必須=標題為“成本”的工作表的A2的單元格值
  • 標題為“成本計算器”的工作表的E10的單元格值需要=標題為“成本”的工作表的B2的單元格值
  • 標題為“成本計算器”的工作表的E11的單元格值必須=標題為“成本”的工作表的C2的單元格值
  • 標題為“成本計算器”的工作表的E12的單元格值需要=標題為“成本”的工作表的D2的單元格值
  • 標題為“成本計算器”的工作表的E13的單元格值需要=標題為“成本”的工作表的E2的單元格值
  • 然后,需要復制工作表中名為“成本計算器”的單元格E22中的計算結果,並將值粘貼到工作表中名為“成本”的G2中。

然后,需要進行兩次更改才能發生完全相同的事情。

  • 標題為“成本計算器”的工作表的E8的單元格值需要=標題為“成本”的工作表的H1的單元格值(偏移一列)

並且需要復制工作表中標題為“成本計算器”的單元格E22中的計算結果,並將粘貼到工作表中標題為“成本”的H2中的值再次偏移一列。

這需要使用相同的兩個偏移量發生21次(包括初始時間)。

如果真是這樣,我會很高興,並且我可以只為每一行運行該宏,但是如果它也可以循環向下一行並繼續運行,直到它到達理想的空白單元格。 如果發生這種情況,則在經過21次之后,需要向下移動一行,如下所示:

  • 標題為“成本計算器”的工作表的E8的單元格值必須=標題為“成本”的工作表的G1的單元格值(因為它是數量,將始終在第1行中)
  • 標題為“成本計算器”的工作表的E9的單元格值必須=標題為“成本”的工作表的A3的單元格值
  • 標題為“成本計算器”的工作表的E10的單元格值需要=標題為“成本”的工作表的B3的單元格值
  • 標題為“成本計算器”的工作表的E11的單元格值需要=標題為“成本”的工作表的C3的單元格值
  • 標題為“成本計算器”的工作表的E12的單元格值需要=標題為“成本”的工作表的D3的單元格值
  • 標題為“成本計算器”的工作表的E13的單元格值必須=標題為“成本”的工作表的E3的單元格值
  • 然后,需要復制工作表標題為“成本計算器”的單元格E22中的計算結果,並將值粘貼到工作表標題為“成本”的G3中。

然后以與以前相同的偏移量循環21次。

我什至不確定Excel是否可以做到這一點,但我認為如果有人在這里可以提供幫助。 如果您對我的問題有任何疑問,請告訴我,我試圖盡可能地描述自己。 希望能傳達出這個想法,如果我需要重新設置工作表的布局以適應可以完成的代碼。

我不確定這正是您要尋找的東西,我被那個

然后與以前相同偏移21倍。 並循環。

我創建了一些代碼來執行以下操作

標題為“成本計算器”的工作表的E8的單元格值=標題為“成本”的工作表的G1的單元格值=標題為“成本計算器”的工作表的E9的單元格值=工作表A2的單元格值標題為“成本計算器”的工作表的E10的單元格值應=標題為“成本”的工作表的B2的單元格值。標題為“成本計算器”的工作表的E11的單元格值應為=標題為“成本”的工作表的C2,標題為“成本計算器”的工作表的E12的單元格值=標題為“成本”的工作表的D2的單元值,需為=“成本計算器”的工作表的E13的單元值,=標題為“成本”的工作表的E2的單元格值,然后需要復制標題為“成本計算器”的工作表的單元格E22中的計算結果,並將該值粘貼到標題為“成本”的工作表的G2中。

然后,需要進行兩次更改才能發生完全相同的事情。 標題為“成本計算器”的工作表的E8的單元格值應=標題為“成本”的工作表的H1的單元格值(偏移一列),並且標題為“成本計算器”的工作表的單元格E22中的計算結果需要為復制並粘貼到名為“成本”的工作表的H2中的值再次偏移一列。

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

因此,這將遍歷工作表的“成本”,並:
*將G2插入A2-E2的計算輸出中,並加上G1和
*將H2插入A2-E2的計算輸出中,並加上H1
*將G3插入A3-E3的計算輸出中,並加上G1和
*將H3插入A3-E3的計算輸出中,並使用H1 ...

這是您需要的嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM