返回列表 上一主題 發帖

[發問] 加總問題

回復 10# luhpro
是小的說不清楚,計算過程如下:
第 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]   (不在條件內 - 沒有計算)
※ J9=-102   和=-91+33-91=-149 (條件3:如果綠色格內的數值<=E5,只當E5的值)

第 2 行 -
※ F10=[-27] (不在條件內 - 沒有計算)
※ G10=135   和=-149+33=-116 (條件1:如果綠色格內的數值>=D5,只當D5的值)
※ M10=[-30] (不在條件內 - 沒有計算)
※ N10=-2   和=-116-2=-118  (條件2:如果綠色格內的數值<D5及>E5,只當格內的值)

第 3 行 -
※ B11=[-61]  (不在條件內 - 沒有計算)
※ C11=-60    和=-118+-60=-178 (條件2)
※ O11=[-9]   (不在條件內 - 沒有計算)
※ P11=20     和=-178+20=-158 (條件2)

TOP

回復 11# donod
電腦這幾天又掛了,到今天程式才弄出來.
你看看是否OK, 程式如下:
  1. Sub nn()
  2.   Dim iCol%, iCols%, iNum%, iIdx%, iI%, iJ%
  3.   Dim lRow&, lRows&, lSum&(0 To 1)
  4.   Dim bChk(0 To 1, 0 To 1) As Boolean

  5.   lSum(0) = 0
  6.   lSum(1) = 0
  7.   For lRow = 9 To 11
  8.     For iI = 0 To 1
  9.       For iJ = 0 To 1
  10.         bChk(iI, iJ) = False
  11.       Next
  12.     Next
  13.     For iCol = 2 To 18
  14.       With Cells(lRow, iCol)
  15.         If Not .Value = "" Then ' 無數字不處理
  16.           iIdx = IIf(.Interior.ColorIndex = 43, 1, 0)
  17.           If Left(.Value, 1) = "[" Then
  18.             bChk(iIdx, 0) = True
  19.             iNum = Val(Mid(.Value, 2, Len(.Value) - 2))
  20.           Else
  21.             bChk(iIdx, 0) = False
  22.             iNum = Val(.Value)
  23.           End If
  24.          
  25.           If Not bChk(iIdx, 0) And bChk(iIdx, 1) Then
  26.             bChk(iIdx, 1) = False
  27.           ElseIf iNum >= Cells(5, 2 + iIdx * 2) Then
  28.             lSum(iIdx) = lSum(iIdx) + Cells(5, 2 + iIdx * 2)
  29.             If bChk(iIdx, 0) Then bChk(iIdx, 1) = True
  30.           ElseIf iNum <= Cells(5, 3 + iIdx * 2) Then
  31.             lSum(iIdx) = lSum(iIdx) + Cells(5, 3 + iIdx * 2)
  32.             If bChk(iIdx, 0) Then bChk(iIdx, 1) = True
  33.           Else
  34.             If Not bChk(iIdx, 0) Then
  35.               lSum(iIdx) = lSum(iIdx) + iNum
  36.               bChk(iIdx, 1) = False
  37.             End If
  38.           End If
  39.         End If
  40.       End With
  41.     Next iCol
  42.   Next lRow
  43.   MsgBox "綠色格總數為 : " & lSum(1) & Chr(10) & Chr(10) & Chr(10) & "無色格總數為 : " & lSum(0)
  44. End Sub
複製代碼

TOP

回復 12# luhpro

可以了,謝謝大大!

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題