2015-07-20 62 views
2

刪除Excel VBA的$符號我有下面的代碼:如何從代碼

Sub poorguy() 
Dim counter As Long 
Dim countto As Long 
Dim col1 As String 
Dim col2 As String 
Dim col3 As String 
Dim col4 As String 
Dim rngwrite As Range 

counter = 0 
countto = 100 

For i = 0 To countto 
    col1 = Cells(12, 2).Offset(0, counter).Address 
    col2 = Cells(12, 3).Offset(0, counter).Address 
    col3 = Cells(3, 2).Offset(0, counter).Address 
    col4 = Cells(3, 3).Offset(0, counter).Address 
    Set rngwrite = Cells(58, 3).Offset(counter, counter) 
    rngwrite.Value = "=(" & col1 & "-" & col2 & ")*" & col3 & "*" & col4 
    counter = counter + 1 
Next 
Set rngwrite = Nothing 
End Sub 

的問題是,它產生的公式太多$。例如, 它給:=($B$12-$C$12)*$B$3*$C$3

我要的是:=($B$12-C12)*$B$3*C3

如何刪除多餘的$的?

回答

5

將(false,false)添加到您不想要絕對值的地址。

Sub poorguy() 
Dim counter As Long 
Dim countto As Long 
Dim col1 As String 
Dim col2 As String 
Dim col3 As String 
Dim col4 As String 
Dim rngwrite As Range 

counter = 0 
countto = 100 

For i = 0 To countto 
    col1 = Cells(12, 2).Offset(0, counter).Address 
    col2 = Cells(12, 3).Offset(0, counter).Address(false, false) 
    col3 = Cells(3, 2).Offset(0, counter).Address 
    col4 = Cells(3, 3).Offset(0, counter).Address(false, false) 
    Set rngwrite = Cells(58, 3).Offset(counter, counter) 
    rngwrite.Value = "=(" & col1 & "-" & col2 & ")*" & col3 & "*" & col4 
    counter = counter + 1 
Next 
Set rngwrite = Nothing 
End Sub 
+0

簡單而有效! – Kelbe

0

的一種方法是在你的字符串擺脫所有$字符與Replace,之後它被設定的地址,但之前它被用來創建公式:

col2 = Replace(col2, "$", "") 

(和同上,用於col4)。

或者,Address的前兩個參數指示行和列部分是生成爲相對(false)還是絕對(true,默認)。這樣可以對生成的字符串進行更精細的控制。