我在excel vba中的代碼有點麻煩。我的目標是將以下if語句轉換爲VBA宏。Excel VBA如果ElseIF else
if語句:
'=IF(R8="W",
'IF(L8>0,L8,
'IF(ABS(L8)<ABS(V7),L8,
'IF(N8+L8<0,L8+Z7,-V7))),
'IF(R8="A",
'IF(L8>0,(V7/(V7+Z7)*L8),
'IF(ABS(V7/(V7+Z7)*L8)>V7,-V7,(V7/(V7+Z7)*L8))),
'Added H not tested it yet
'IF(AND(R9="H",-L9>Z8),Z8+L9,0)
'IF(R8="C",
'IF(L8>0,L8/2,
'IF(AND((-L8/2)<V7,(-L8/2<Z7)),L8/2,
'IF(AND(V7<=0,Z7<=0),L8/2,
'IF(Z7+L8>0,-V7,-V7+(L8+Z7+V7)/2)))),0)))
我想要做的是,如果在R列一個W,我想它來檢查,如果在L欄量之大,零,如果這是真的,返回列L中的金額。如果爲false,則檢查列L中金額的絕對值是否小於列V中金額的絕對值。如果爲true,則返回列L中的金額,否則對列N中的金額進行求和和列L.如果總和小於零,則返回列L和Z中金額的總和。如果它爲假,則返回列v中的金額(使其爲負)。
我試圖解決它。
Private Sub looping()
Dim rw_cnt As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
rw_cnt = 8
Do While Sheets("Personal").Range("R" & rw_cnt).Value <> ""
If Sheets("Personal").Range("R" & rw_cnt).Value = "W" Then
'I am having difficulties on this section.
Sheets("Personal").Range("V" & rw_cnt).Select
If "=RC[-8]" > 0 Then
ActiveCell.FormulaR1C1 = "=RC[-8]"
ElseIf Abs("=RC[-8]") < Abs("=R[-1]C[2") Then
ActiveCell.FormulaR1C1 = "=RC[-8]"
ElseIf ("=RC[-6]" + "=RC[-8]") < 0 Then
ActiveCell.FormulaR1C1 = "=RC[-8]" + "=R[-1]C[6"
Else
ActiveCell.FormulaR1C1 = "=-R[-1]C[7"
End If
Sheets("Personal").Range("Z" & rw_cnt).Select
ActiveCell.FormulaR1C1 = "=0"
End If
rw_cnt = rw_cnt + 1
Loop
MsgBox ("Done!!!")
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
在此先感謝!
https://i.stack.imgur.com/4KiVg.png
你試圖插入公式插入到細胞,或你想放置的實際值進入細胞? – YowE3K
而且我假設您試圖替換的Excel公式在您顯示的位(或至少是'')')之後有一個',FALSE)'是否正確?或者你是否試圖編寫一個宏,以便在列R中不包含「W」的情況下保留列T中的當前值不變? – YowE3K
你試圖將結果放入哪一列? (你現在的代碼並不符合問題中的公式 - 例如,你正在尋找代碼中列T是否包含「W」,但問題是關於包含「W」的列R,而你的代碼正在更新列V或列Z,但你的問題說列V是公式中的輸入之一等等) – YowE3K