循环遍历一系列单元格,将数据输入到其他单元格(下拉选项)并返回计算结果

时间:2010-01-20 16:17:11

标签: excel vba loops excel-vba excel-2003

我有一个在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,但我想如果有人在这里将能够提供帮助。如果您对我提出的问题有任何疑问,请告诉我,我尽量做到描述性。希望这个想法得到传达,如果我需要重新格式化我的工作表的布局以适应可以完成的代码。

1 个答案:

答案 0 :(得分:0)

我不确定这正是你要找的,我被

抛出
  

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

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

  

工作表的E8的单元格值   题为“成本计算器”需要=   工作表的G1的Cell值   标题为“成本”的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

因此,这将循环通过工作表“成本”和:
*为A2 - E2的计算输出插入G2,G1和
*插入H2用于计算输出A2 - E2和H1
*为A3-E3的计算输出插入G3,G1和
*为A3 - E3的计算输出插入H3,其中H1 ...

这是你需要的吗?