我使用下面的代碼來計算的數據平衡,平衡=需求 - 收集多重條件VB宏在Excel中,簡單的代碼需要修改
代碼:
Sub DCB()
Dim c As Range
Dim lRow As Long
lRow = 1
Dim lRowLast As Long
Dim lRowDiff As Long
Dim lRowPortion As Long
lRowPortion = 1
Dim bFoundCollection As Boolean
With ActiveSheet
lRowLast = .Cells(.Rows.Count, 1).End(xlUp).Row
Do
Set c = .Range("A" & lRow)
If c.Value Like "*COLLECTION*" Then
bFoundCollection = True
ElseIf bFoundCollection Then
bFoundCollection = False
If c.Value <> "BALANCE" Then
c.EntireRow.Insert
lRowLast = lRowLast + 1
Set c = c.Offset(-1, 0)
c.Value = "BALANCE"
End If
If c.Value = "BALANCE" Then
.Range(c, c.Offset(0, 18)).Font.Color = RGB(0, 0, 0)
.Range(c, c.Offset(0, 18)).Interior.Color = RGB(200, 200, 200)
lRowDiff = c.Row - lRowPortion
.Range(c.Offset(0, 3), c.Offset(0, 18)).FormulaR1C1 = _
"=SUMIF(R[-" & lRowDiff & "]C1:RC1, ""*DEMAND*"", R[-" & lRowDiff & "]C:RC)" & _
"-SUMIF(R[-" & lRowDiff & "]C1:RC1, ""*COLLECTION*"", R[-" & lRowDiff & "]C:RC)"
lRowPortion = c.Row + 1
End If
End If
lRow = lRow + 1
Loop While lRow <= lRowLast + 1
End With
End Sub
但我有一些現在的問題,在計算餘額時有一些條件需要應用。 U W Y列是超額金額列,這些列的值分別取決於I N S列餘額金額。
例如在I1中,需求是50個集合是10,所以按照公式,Balance = Demand - collection因此50-10 = 40,但是U列中有值,我想剩下的40個數量應該被扣除從U列&餘額應顯示0和調整後的40應該顯示在T1列。
我想要對上面的宏進行調整,首先應該檢查I2的值,如果I2的值大於I1則無問題,簡單的公式將應用B = DC,但如果I2的值較小比I1或I2的值爲0,則會檢查U1中是否有值,如果有一些值,那麼將相應地調整該量,並在T1中顯示調整量。
同樣N列與W列關聯,調整量顯示在V列& S列與Y列關聯,調整量顯示在X列上。
這不是VB.NET代碼。它看起來像某種形式的VBA – Plutonix