如何将公式或值复制到另一个公式中

如何将公式或值复制到另一个公式中

我想知道如何将一个公式复制到另一个公式中,同时保留原始值。例如,我在范围内有A1:A5五个值(常量和/或公式的混合),我需要(在同一范围内 - 而不是在新列中)包含函数=Round("original value or formula",2),(或任何其他公式;这只是一个例子)

例如:

  • A1原始值  50.64635
  • A2原始公式=3*F1   (可能显示54.25875F1包含18.08625
  • A3原始公式=SQRT(2)   (将显示为1.4142136

我想要的结果是:

  • A1新内容(公式)  =round(50.64635,2)
  • A2新内容(公式)  =round(3*F1,2)
  • A3新内容(公式)  =round(SQRT(2),2)

等等。请注意,我不想A1被改为50.65,我也不想A2被改为54.26,甚至=ROUND(54.25875,2)等等。我知道如何用简单的操作(copy/paste special – Formula – add, substract, multiply, divide)做类似的事情并保留原始值或公式。但我不知道如何将函数包装在现有值周围或以其他方式构建公式,使用现有公式作为组件。

另一个想法是将我的原始值/公式转换为文本,使用查找/替换功能,连接或一些奇怪的混合,我会得到我想要的结果,但我想知道是否有一些更短的方法;)

答案1

Excel 的“查找和替换”功能似乎不够强大,无法满足您的需求。不过,在 VBA 中,这相当容易。


首先,复制一份您的文件,以防出现问题。

然后创建以下 VBA 子程序:

Sub Arom79Sub()

    On Error Resume Next
    For Each c In Range("A1:A5")
        If c.HasFormula And Left(c.Formula, 1) = "=" Then
            temp = Right(c.Formula, Len(c.Formula) - 1)
        Else
            temp = c.Value
        End If
        If temp <> "" Then
            c.Formula = "=ROUND(" & temp & ", 2)"
        End If
    Next c
    On Error GoTo 0

End Sub

如何在 MS Office 中添加 VBA?有关如何在 Excel 和其他 Microsoft Office 应用程序中使用 VBA 的一般信息。  Arom79Sub只是一个任意的子程序名称;使用您想要的任何名称。

  • On Error Resume Next表示,如果发生错误,则转到下一个语句并继续运行。(例如,如果单元格包含不是数字的常量值(即字符串/文本值),则上述代码将导致错误。)
  • For Each c...Next c是一个循环,查看范围内的每个单元格A1:A5,设置c为按顺序引用每个单元格。
  • c.HasFormula是一个布尔值,表示单元格是否c包含公式。然后我们还检查“公式”的第一个字符是否为=。这可能是多余的。如果它肯定是一个公式,请设置temp为实际公式;即右侧的所有内容= (例如 3*F1,在您的示例中为A2)。
  • 否则,设置temp为单元格中的值(例如50.64635,在您的示例中为A1)。
  • 如果值(或公式)非空,则将单元格的公式设置为。
            =ROUND(previous_contents, 2)
  • 执行On Error GoTo 0以恢复正常的错误处理。

然后运行子程序。

显然,您可以改变范围或新公式。

相关内容