0

我有一个内置在 Excel 2003 中的计算器,您可以在其中从下拉菜单中选择选项,然后收集数据并计算返回生产该项目包的总成本。我想要的是循环浏览此下拉列表的所有组合,并自动将总单位成本返回到另一个单元格。

我已经创建了一个巨大的网格,所有可能的下拉选择都输入到单独的工作表中。这是一次迭代的示例,但显然这需要循环并且单元格引用需要随着移动而偏移。

  • 标题为“成本计算器”的工作表中 E8 的单元格值需要 = 标题为“成本”的工作表中 G1 的单元格值
  • 标题为“成本计算器”的工作表 E9 的单元格值需要 = 标题为“成本”的工作表 A2 的单元格值
  • 题为“成本计算器”的工作表的 E10 的单元格值需要 = 题为“成本”的工作表的 B2 的单元格值
  • 标题为“成本计算器”的工作表中 E11 的单元格值需要 = 标题为“成本”的工作表中 C2 的单元格值
  • 标题为“成本计算器”的工作表中 E12 的单元格值需要 = 标题为“成本”的工作表中 D2 的单元格值
  • 题为“成本计算器”的工作表中 E13 的单元格值需要 = 题为“成本”的工作表中 E2 的单元格值
  • 然后需要复制标题为“成本计算器”的工作表单元格 E22 中的计算结果,并将值粘贴到标题为“成本”的工作表的 G2 中。

然后完全相同的事情需要发生 2 次更改。

  • 题为“成本计算器”的工作表的 E8 单元格值需要 = 题为“成本”的工作表的 H1 的单元格值(偏移一列)

并且需要复制标题为“成本计算器”的工作表的单元格 E22 中的计算结果,并将粘贴到标题为“成本”的工作表的 H2 中的值再次偏移一列。

这需要以相同的两个偏移量发生 21 次(包括初始时间)。

如果是这种情况,我会很高兴,我可以为每一行运行宏,但如果它也可以循环向下一行并继续运行,直到它碰到一个理想的空白单元格。如果发生这种情况,在 21 次之后,它需要向下移动一行,如下所示:

  • 标题为“成本计算器”的工作表中 E8 的单元格值需要 = 标题为“成本”的工作表中 G1 的单元格值(将始终位于第 1 行,因为这是数量)
  • 题为“成本计算器”的工作表 E9 的单元格值需要 = 题为“成本”的工作表的 A3 的单元格值
  • 题为“成本计算器”的工作表的 E10 的单元格值需要 = 题为“成本”的工作表的 B3 的单元格值
  • 标题为“成本计算器”的工作表中 E11 的单元格值需要 = 标题为“成本”的工作表中 C3 的单元格值
  • 题为“成本计算器”的工作表的 E12 的单元格值需要 = 题为“成本”的工作表的 D3 的单元格值
  • 标题为“成本计算器”的工作表中 E13 的单元格值需要 = 标题为“成本”的工作表中 E3 的单元格值
  • 然后需要复制标题为“成本计算器”的工作表单元格 E22 中的计算结果,并将值粘贴到标题为“成本”的工作表的 G3 中。

然后与之前相同的偏移量 21 次并循环。

我什至不确定 Excel 是否可以做到这一点,但我想如果这里有人可以提供帮助。如果您对我的要求有任何疑问,请告诉我,我试图尽可能描述性。希望这个想法得到传达,如果我需要重新格式化工作表的布局以适应可以完成的代码。

4

1 回答 1

0

我不确定这正是您要找的东西,我被

然后与之前相同的偏移量 21 次。并循环。

我创建了一些将执行以下操作的代码

题为“成本计算器”的工作表的 E8 单元格值需要 = 题为“成本”的工作表的 G1 的单元格值 题为“成本计算器”的工作表的 E9 的单元格值需要 = 工作表的 A2 的单元格值题为“成本”的工作表的 E10 单元格值 题为“成本计算器”的工作表需要 = 题为“成本”的工作表的 B2 的单元格值 题为“成本计算器”的工作表的 E11 的单元格值需要 = 的单元格值题为“成本”的工作表的 C2 题为“成本计算器”的工作表的 E12 的单元格值需要 = 题为“成本”的工作表的 D2 的单元格值 题为“成本计算器”的工作表的 E13 的单元格值需要 = 标题为“成本”的工作表 E2 的单元格值 然后需要复制标题为“成本计算器”的工作表的单元格 E22 中的计算结果,并将值粘贴到标题为“成本”的工作表的 G2 中。

然后完全相同的事情需要发生 2 次更改。题为“成本计算器”的工作表的 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 ...

这是你需要的吗?

于 2010-01-25T23:21:32.347 回答