【问题标题】:Looping through cells by column and converting each current cell value to new cell values through a function (Excel VBA)按列循环单元格并通过函数将每个当前单元格值转换为新的单元格值(Excel VBA)
【发布时间】:2018-01-20 21:59:31
【问题描述】:

我正在尝试解决一个问题,该问题要求使用公式 (constant$ = current$/(CPI-U*0.01)) 将当前美元金额转换为恒定美元金额。

我想先使用 excel vba 循环遍历列中的每个单元格,然后在到达列底部没有数据的单元格后移至下一列(使用偏移量?)。该循环不包括第一列或最后一列(年份和 CPIU),并且每次迭代都将当前单元格美元值输入到公式中,并用更新的恒定美元值替换当前单元格美元值(不将其放入不同的表中) .

例如,如果 B2 的单元格值为 11116,而对应的年份 CPIU 为 41.8,则将 11116 输入到函数 =QUOTIENT(11116, PRODUCT(41.8,0.01))。将单元格 B2 中的 11116 替换为 26593。

我还希望每次循环迭代时更新 CPIU 单元格引用。例如,CPIU 在“F”列中,因此如果其单元格 B2 则应选择 F2,C3 到 F3 等等。

这是针对以下excel函数示例:

ActiveCell.Formula = "=QUOTIENT(B2,PRODUCT(F2,0.01))"

*B2 将被替换为循环迭代器,但仍试图弄清楚如何在每次迭代时更新 F 列

这是表格: Data Table *范围 A1:F17(包括标题)

这是 vba 过程循环的开始:

Public Sub LoopThroughAllTableCells()
    Dim convertedValue As Long

    For Each c In Worksheets("Sheet1").Range("B2:E17").Cells

    Next   
End Sub

*不确定当前循环是否是遍历 1 列中每个单元格然后移至下一列的正确方法。

为这篇冗长的帖子道歉,但无法将各个部分拼凑在一起。任何帮助将非常感激!

【问题讨论】:

  • 循环列直到没有数据的最佳方法是使用循环。类似Do until ActiveCell.Value="" 'your code to whatever Activecell.Offset (1,0).Select Loop

标签: excel loops vba


【解决方案1】:

试试这个:

Public Sub LoopThroughAllTableCells()

Range("B2").Select 'position of the first cell and column you want to check
Do Until ActiveCell.Column = 6
    Do Until ActiveCell.Value = ""
        ActiveCell.Value = ActiveCell.Value / (Range("F" & ActiveCell.Row).Value * 0.01)
        ActiveCell.Offset(1, 0).Select
    Loop
    Cells(2, ActiveCell.Column + 1).Select
Loop

End Sub

如果你需要你的值是整数,没有小数然后改变这一行:

ActiveCell.Value = ActiveCell.Value / (Range("F" & ActiveCell.Row).Value * 0.01)

并使用这一行:

ActiveCell.Value = Application.WorksheetFunction.Round(ActiveCell.Value / (Range("F" & ActiveCell.Row).Value * 0.01), 0)

【讨论】:

  • 如果此答案有帮助,请将其标记为好。如果没有,请说出您遇到的问题,以便其他人可以提供帮助。
  • 正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多