从Excel

时间:2017-01-19 00:40:46

标签: excel vba excel-vba excel-formula

这是一个黑客的Excel问题,当然不是标准程序。提前道歉。

在工作簿中,我有一个财务模型。它跨越三张:RevenueExpense,它们都从Inputs读取信息。这些床单一起构成了一个完整的模型。

我希望通过在第一个模型旁边创建一个重复的模型来扩展我的工作簿。我的想法是有可以比较的并排场景。 2组输入,2组费用计算和2组收入计算,每个计划在其各自的选项卡上并排设置。

通常情况下,我只会将公式复制到' bam'我有一个重复的模型。不幸的是,我无法做到这一点,因为我使用了大量$字符,锁定了我的单元格引用。将Revenue中的公式复制到右侧不会更改公式在Inputs选项卡上引用的单元格。该模型足够大,手动删除每个公式的单元格引用锁需要数小时。

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

  1. 这会有用吗?
  2. 如何使用VBA从公式中删除特定字符?

2 个答案:

答案 0 :(得分:5)

您可以按# input these_letters = c("I", "f", " ", "a", " ", "p", "r", "o", "g", "r", "a", "m") # desired_output sentence = "If a program" 这将更改所有单元格显示其值以显示其公式。在此视图中,您可以按ctrl+'将所有ctrl+H替换为空,然后点击“全部替换”。

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

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

请注意,如果您在新的无美元符号表中进行任何编辑推断公式,它可能是不正确的,因为它也会推断应该包含$的集合引用。

答案 1 :(得分:1)

用于删除Excel中外部链接路径中的$ -

Sub ExtLinks_RelativePaths()

此宏通过从单元格引用中删除$,将所选单元格中的外部链接转换为相对链接 '来源:todd.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