Vba 倒置+;和-,<;及>;Excel单元格和公式中的符号

Vba 倒置+;和-,<;及>;Excel单元格和公式中的符号,vba,excel,excel-formula,Vba,Excel,Excel Formula,我有一本巨大的Excel 2016工作簿,其中(出于财务原因)所有收入均表示为负数,所有成本均表示为正数 我需要: 反转所有工作簿内容中的+和-符号 反转所有工作簿公式中的>和

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

我需要:

  • 反转所有工作簿内容中的+和-符号
  • 反转所有工作簿公式中的>和<符号
我不能只使用“paste special”与
-1
相乘,因为这种方法可以处理单元格的值,但不能处理公式的文本,也不能反转公式中每个数字的+和-符号以及<和>符号

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

我有类似于
=IF(-A3
的公式

我需要单元格
A3
变成
+150
,单元格
B4
变成
-20

我需要公式变成
=IF(-A3>B4,A3*5,A3*-2)

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


非常感谢。

您可以尝试以下内容:

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
Sub Replacement()
变暗rng,c As范围
作为字符串的Dim fml
'将其设置为所需的范围
设置rng=范围(“A1:C4”)
对于rng中的每个c
如果c.HasFormula那么
'如果单元格包含公式,则。。。
fml=c.公式
fml=fml&“*(-1)”翻转符号
fml=Replace(fml,“,”)'将临时字符串替换为所需的字符
c、 公式=fml
其他的
'如果是值,只需乘以-1即可
c、 值=c。值*-1
如果结束
下一个c
端接头

是否要将所有单元格值反转为相反的数字?即从负到正,反之亦然?还是要更改公式中每个数字的符号?像
-5
5
2
-2
?迈克尔,我意识到我的问题并不完全清楚,我已经重新措辞了。是的,所有单元格值都应该改变符号,我需要在公式中反转+和-符号,以及<和>符号。谢谢你的帮助!单元格
B4
A3
是由公式定义的还是刚输入的值?它们可能都是。。。。。。。它们可能指的是同一张工作表或另一张工作表……因此,一般来说,您希望将所有单元格乘以
-1
,在公式中,如果有,您希望将
替换为
,非常感谢Michal。此代码似乎改变了和反之亦然。此外,它似乎将公式的结果乘以-1。如果是这样,我不必更改公式结果的符号,而是需要更改公式中每个数字的符号。。。。