向公式添加循环并仅显示公式计算的值

Adding loops to a formula and displaying only the values of the formula computation

我有两个问题希望得到很多帮助:

  1. 我已 VBA 链接到一个按钮,该按钮根据输入的参数计算某些单元格的值。然而,我仍然是一个基本用户,无法让它循环。 VBA 的目的是继续计算,直到给定单元格中的值为零。
  2. 是否可以让 VBA 只在单元格中计算输入值而不输入相应的公式?请参阅下面的代码片段:

    子公式1() ' 公式 1

    Range("H17").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=ROUNDDOWN((RC[-1]-RC[-2])/30,0)"
    ActiveCell.Select
    
    ' Formular2 Macro
    Range("I17").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=RC[-5]/RC[-1]"
    ActiveCell.Offset(1, 0).Range("A1").Select
    
    ' Formular 3
    Range("J17").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=R4C9"
    Range("J20").Select
    
    End Sub
    

您可以将公式写入单元格并立即将公式还原为其返回值,也可以计算该值并直接将其写入单元格。

dim nr as long
'option 1
with activesheet
    nr = .cells(rows.count, "H").end(xlup).offset(1, 0).row
    .cells(nr, "H").formula = "=TRUNC((G" & nr & "-F" & nr & ")/30)"
    .cells(nr, "I").formula = "=G" & nr & "/F" & nr
    .cells(nr, "J").formula = "=I4"
    with .cells(nr, "H").resize(1, 3)
        .value = .value
    end with
end with

'option 2
with activesheet
    nr = .cells(rows.count, "H").end(xlup).offset(1, 0).row
    .cells(nr, "H") = int((.cells(nr, "D").value - .cells(nr, "H").value) / 30)
    .cells(nr, "I") = cdbl(.cells(nr, "G").value / .cells(nr, "F").value)
    .cells(nr, "J") = .cells(4, "I").value
end with

这里有每种方法的示例。我确实通过使用 TRUNC function in place of the ROUNDDOWN function 稍微简化了您的第一个公式,但在这种情况下它们都执行相同的操作。

我有点担心您似乎将这些 formula/values 写入新行,但您引用了同一行中的其他单元格。我不得不假设这些其他单元格首先填充了公式或值。

不确定您要做什么。但是

显然我没有使用你的范围,因为你没有提供足够的信息来说明你想做什么。

如果你想遍历一系列单元格并将公式转换为值,就像这样。

for each rcell in worksheet("myworksheet").Range("A1:A15").Cells
if rcell.value = "0" then
exit sub
else
rcell.value = rcell.value
end if
next rcell

顺便说一下,一个朋友告诉我他用过这个网站。他说他们提供了一些关于基本 excel 公式的免费培训视频 vba 还没有,但他用它们为他创建了一个宏,这是一个非常合理的成本。

http://www.excelformulashelp.com/