2013-07-25 97 views
10

我有一個工作表上看起來像=((E9-E8)/E8)遍佈整個地方的許多單元格。我想用前兩個值進入這個新公式,(EXP((LN(E9/E8)/14.32))-1)簡單的Excel查找和替換公式

我怎樣才能一次性將它們全部更改爲新配方?

+0

*遍佈整個地方* - 所以沒有任何單個列或行?大概有多少是*全部*? – pnuts

+0

在整個地方意味着有三個不同的列,公式將發生總共31次。由於結構在每種情況下都是相同的,我最終轉向R1C1。看到我的答案。 – Tomulent

+0

轉換爲RC格式是大規模應用這種方式的方式,但不值得(因爲我懷疑)小規模。請注意,我會考慮31小規模!考慮到exa和其他答案,我認爲這是一個值得高分的問題,所以我的+1 - 儘管這隻會讓它回到0恐怕。 – pnuts

回答

12

如果公式是相同的,您可以使用查找和替換Match entire cell contents已檢查和Look in: Formulas。選擇範圍,進入查找和替換,進行輸入並單擊「全部替換」。

enter image description here

還是你的意思是,有幾個公式與此相同的形式,但不同的單元格引用?如果是這樣,那麼一種方法是正則表達式匹配和替換。正則表達式不是內置於Excel(或VBA)中,但可以通過Microsoft的VBScript正則表達式庫訪問。

以下功能提供必要的匹配和替換功能。它可以在一個子程序中使用,該子程序可以識別具有指定範圍內的公式的單元格,並使用公式作爲函數的輸入。對於與您正在查找的模式相匹配的公式字符串,該函數將生成替換公式,然後將其寫回工作表。

Function RegexFormulaReplace(formula As String) 
    Dim regex As New RegExp 
    regex.Pattern = "=\(\(([A-Z]+\d+)-([A-Z]+\d+)\)/([A-Z]+\d+)\)" 
' Test if a match is found 
    If regex.Test(formula) = True Then 
     RegexFormulaReplace = regex.Replace(formula, "=(EXP((LN($1/$2)/14.32))-1") 
    Else 
     RegexFormulaReplace = CVErr(xlErrValue) 
    End If 
    Set regex = Nothing 
End Function 

爲了使該功能正常工作,您需要添加對Microsoft VBScript Regular Expressions 5.5庫的引用。從主功能區的Developer選項卡中,從主工具欄中選擇VBA,然後選擇References。向下滾動以查找對庫的引用,並選中它旁邊的框。

+0

是的有幾個公式具有相同的形式,但不同的單元格引用。 – Tomulent

1

使用通過ctrl + h可訪問的find和replace命令,確保您正在搜索單元格的功能。然後可以使用通配符來適應公式的任何偏差。 *用於#通配符,?爲charcter通配符,和〜?或〜*搜索?要麼 *。

+0

我是新來的,所以我不太確定那是如何工作的。我將如何使用通配符表示我在我的問題中提出的公式?再次,我有30個公式,看起來像所有不同的引用,我想改變看起來像第二個公式。 – Tomulent

+0

更改所有對通配符的單元格引用將如下所示: (1)如果你需要更多的通配符,我希望這將用於作爲你的一個很好的例子。 – Mason

+0

不幸的是,沒有奏效。幸運的是,我能夠以不同的方式解決問題。如果你好奇,看看我的答案 – Tomulent

6

事實證明,解決方案是切換到R1C1單元參考。我的工作表是這樣構建的,即每個公式都有相同的結構,只是不同的引用。運氣雖然,他們總是定位在所述方式相同

=((E9-E8)/E8) 

成爲

=((R[-1]C-R[-2]C)/R[-2]C) 

(EXP((LN(E9/E8)/14.32))-1) 

成爲

=(EXP((LN(R[-1]C/R[-2]C)/14.32))-1) 

在R1C1引用,每式是相同的,從而查找和代表花邊不需要通配符。謝謝那些回答!

1

我通常處理的方式是使用第二塊軟件。 對於Windows,我使用記事本++,對於OS X我使用Sublime Text 2。

  1. 在Excel中,按下Control +〜(OS X)
  2. Excel將所有的值轉換成其式版本
  3. CMD + A(I通常做這兩次)來選擇整個片
  4. 複製所有內容,並將其粘貼到記事本++ /崇高文本2
  5. 查找/替換此公式內容
  6. 內容複製並粘貼回Excel中,證實了有關細胞大小差異的任何問題
  7. 控制+〜切換回數值模式