Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从Excel中的公式中删除所有$_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 从Excel中的公式中删除所有$

Vba 从Excel中的公式中删除所有$,vba,excel,excel-formula,Vba,Excel,Excel Formula,这是一个骇人的Excel问题,当然不是标准程序。事先道歉 在工作簿中,我有一个财务模型。它包括三个页面:收入和费用,这两个页面都从输入中读取信息。这些图纸一起构成一个完整的模型 我想通过在第一个工作簿旁边创建一个复制模型来扩展工作簿。这样做的目的是让我可以比较并排的场景。2组输入、2组费用计算和2组收入计算,每一组并列在各自的选项卡上 通常,我只是复制公式,然后“砰”的一声,我得到了一个重复的模型。不幸的是,我不能这样做,因为我使用了大量的$字符来锁定我的单元格引用。将Revenue中的公式复制

这是一个骇人的Excel问题,当然不是标准程序。事先道歉

在工作簿中,我有一个财务模型。它包括三个页面:
收入
费用
,这两个页面都从
输入中读取信息
。这些图纸一起构成一个完整的模型

我想通过在第一个工作簿旁边创建一个复制模型来扩展工作簿。这样做的目的是让我可以比较并排的场景。2组输入、2组费用计算和2组收入计算,每一组并列在各自的选项卡上

通常,我只是复制公式,然后“砰”的一声,我得到了一个重复的模型。不幸的是,我不能这样做,因为我使用了大量的
$
字符来锁定我的单元格引用。将
Revenue
中的公式复制到右侧不会改变
Inputs
选项卡上公式引用的单元格。模型足够大,手动从每个公式中删除单元格引用锁需要几个小时

我目前的计划是使用VBA从公式中删除所有
$
字符,然后继续使用复制粘贴方法

  • 这样行吗
  • 如何使用VBA从公式中删除特定字符

  • 您可以按
    ctrl+”
    这会将所有单元格从显示其值更改为显示其公式。在此视图中,您可以按ctrl+H键将所有
    $
    替换为零,然后单击“全部替换”

    所以不需要在vba中编写所有代码,这本来也是可能的,但可能要复杂一点

    这将删除所有要删除的美元符号


    但请注意,如果您在新的无美元符号表中对外推公式进行任何编辑,则可能不正确,因为它还将外推应包含$的集合引用,以删除Excel中外部链接路径中的
    $

    Sub-ExtLinks\u relativePath()

    此宏通过从单元格引用中删除
    $
    ,将选定单元格中的外部链接转换为相对链接 资料来源:托德。kluge@merrillcorp.com

     Dim myCells As Range, curCell As Range
     Dim myVal As Boolean
    
        Application.DisplayAlerts = False
        Application.EnableEvents = False
        Application.ScreenUpdating = False
    
        Set myCells = ActiveSheet.UsedRange
    
        On Error Resume Next
        For Each curCell In myCells
            curCell.Select
            myVal = IsFormula(curCell)
                If myVal = True Then
                    With Selection
                        .replace What:="$", Replacement:="", LookAt:=xlPart, SearchOrder:= _
                            xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
                    End With
                End If
        Next curCell
    
        Application.DisplayAlerts = True
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    
        MsgBox ("Formulas on the active sheet now have relative references.")
    End Sub
    
    Function IsFormula(cell_ref As Range)
        IsFormula = cell_ref.HasFormula
    End Function
    

    听起来是“先设计后实施”原则的一个很好的例子;)我相信
    单元格
    对象中有一个
    公式
    成员,您可以通过
    范围
    引用它。我不在电脑旁,所以我无法为您键入任何内容。使用“移动或复制”来复制这三个选项卡如何?然后修改三个选项卡中的一组以形成新的场景。如果您需要同时查看这两个模型,请使用“视图”>“新建窗口”——您可以使用这些视图选项并排查看两个选项卡。这绝对是一种“先设计后实施”的情况!不幸的是,这是老板在我完成模型后传给我的条件。这正是我想要的。非常感谢。请注意,
    ctrl+'
    对我不起作用;我选择了所有单元格,并单击了“公式”选项卡下的“显示公式”,通过此链接:@rvictordelta Hi我很高兴它能为您工作!我在格式化上面正确的快捷方式时遇到了一点问题,用“我是说”,用反勾号或反引号代替常规的引号。如:在将来,如果您想切换到带有快捷键的公式视图,您仍然可以尝试,如果它在您的键盘上,对我来说,它在Excel 2016中工作。或者它可能在键盘布局上不可用,在这种情况下,很好地解决了手动解决方案!