- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
4#
發表於 2013-10-29 23:46
| 只看該作者
本帖最後由 luhpro 於 2013-10-29 23:49 編輯
回復 3# donod
原式有些地方沒考慮週到, 我又修改了一下:- Sub nn()
- Dim iCol%, iCols%, iNum%, iIdx%
- Dim lRow&, lRows&, lSum&(0 To 1)
- Dim bChk(0 To 1) As Boolean
-
- lSum(0) = 0
- lSum(1) = 0
- For lRow = 9 To 11
- bChk(0) = False
- bChk(1) = False
- For iCol = 2 To 18
- With Cells(lRow, iCol)
- If Not .Value = "" Then ' 無數字不處理
- iIdx = IIf(.Interior.ColorIndex = 43, 1, 0)
- If Left(.Value, 1) = "[" Then
- iNum = Val(Mid(.Value, 2, Len(.Value) - 2))
- Else
- If bChk(iIdx) Then iNum = 0 Else iNum = Val(.Value)
- End If
- If iNum >= Cells(5, 2 + iIdx * 2) Then
- lSum(iIdx) = lSum(iIdx) + Cells(5, 2 + iIdx * 2)
- bChk(iIdx) = True
- ElseIf iNum <= Cells(5, 3 + iIdx * 2) Then
- lSum(iIdx) = lSum(iIdx) + Cells(5, 3 + iIdx * 2)
- bChk(iIdx) = True
- Else
- lSum(iIdx) = lSum(iIdx) + iNum
- End If
- End If
- End With
- Next iCol
- Next lRow
- MsgBox "綠色格總數為 : " & lSum(1) & Chr(10) & Chr(10) & Chr(10) & "無色格總數為 : " & lSum(0)
- End Sub
複製代碼 不過計算出來的結果與你的不同,
是我對條件的敘述有誤解嗎?
以綠色格為例: (底下略過非綠色格或空值格)
第 1 行 - ( D5=33 , E5=-91 )
※ C9=[-100] 和=-91 (條件5 - 如果綠色格內有[]的數值<=E5,只當E5的值,不需計算其右邊無[]的數值, 觸發)
※ D9=33 (條件5 - 略過)
※ G9=[35] 和=-91+33=-58 (條件4 - 如果綠色格內有[]的數值>=D5,只當D5的值,不需計算其右邊無[]的數值)
※ H9=-110 (條件5 - 略過)
※ I9=[32] 和=-58+32=-26 (條件2)
※ J9=-102 (條件5 - 略過)
第 2 行 -
※ F10=[-27] 和=-26+-27=-53 (條件2)
※ G10=135 和=-53+33=-20 (條件4, 觸發)
※ M10=[-30] 和=-20+-30=-50 (條件2)
※ N10=-2 (條件4 - 略過)
第 3 行 -
※ B11=[-61] 和=-50+-61=-111 (條件2)
※ C11=-60 和=-111+-60=-171 (條件2)
※ O11=[-9] 和=-171+-9=-180 (條件2)
※ P11=20 和=-180+20=-160 (條件2)
我算出來的結果是 : -160 與 -56 |
|