【问题标题】:Invert + and -, < and > signs in Excel cells AND formulas反转 Excel 单元格和公式中的 + 和 -、< 和 > 符号
【发布时间】:2017-08-28 06:02:51
【问题描述】:

我有一个巨大的 Excel 2016 工作簿,其中(出于财务原因)所有收入都表示为负数,所有成本都表示为正数。

我需要:

  • 反转所有工作簿内容中的 + 和 - 符号。
  • 反转所有工作簿公式中的 > 和

我不能只使用与-1 相乘的“特殊粘贴”,因为虽然这种方法适用于单元格的值,但它不适用于公式的文本,并且它不会反转 + 和 - 符号,也不是公式中每个数字的 符号。

例如,假设我的单元格A3 的值为-150,单元格B4 的值为20

我有像=IF(-A3&lt; B4,A3*-5,A3*2) 这样的公式。

我需要将单元格A3 变为+150,并将单元格B4 变为-20

我需要将公式变为=IF(-A3&gt;B4,A3*5,A3*-2)

我担心我应该使用某种 VBA 代码,但坦率地说,我对此一无所知。 有人能帮帮我吗?

非常感谢。

【问题讨论】:

  • 您想将所有单元格值反转为相反的数字吗? IE。负转正,反之亦然?或者你想改变公式中每个数字的符号?喜欢-552-2
  • Michal,我意识到我的问题并不完全清楚,我已经改写了它。是的,所有单元格值都应该更改符号,并且我需要在公式中反转 + 和 - 符号,以及 符号。感谢您的帮助!
  • 单元格B4A3 是由公式定义的还是只是输入的值?
  • 它们可能都是.......并且它们可能指的是同一个工作表或另一个......
  • 所以,一般情况下,您想将所有单元格乘以-1,在公式中,如果有的话,您想用&lt; 替换&gt;,反之亦然?

标签: vba excel excel-formula


【解决方案1】:

你可以试试这样的:

Sub Replacement()
Dim rng, c As Range
Dim fml As String
'set it to the range you want
Set rng = Range("A1:C4")

For Each c In rng

    If c.HasFormula Then
        'if cell contains formula, then...
        fml = c.formula
        fml = fml & "*(-1)" 'flip the sign
        fml = Replace(fml, "<", "~!@~") 'change temporarily to some unique string
        fml = Replace(fml, ">", "<")
        fml = Replace(fml, "~!@~", ">") 'replace temporary string to character we want
        c.formula = fml
        Else
            'if it's value, just multiply by -1
            c.Value = c.Value * -1
        End If

    Next c

End Sub

【讨论】:

  • 非常感谢米哈尔。这段代码似乎改变了 ,反之亦然。此外,它似乎将公式的结果乘以 -1。如果是这样,我不必更改公式结果的符号,而是需要更改公式中每个数字的每个符号....
猜你喜欢
  • 2012-01-14
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
相关资源
最近更新 更多