您還真是不厭其煩的想達成這個目標呢-w-
再幫您努力一下吧,有始有終。對了可以問你要怎麼同時回復兩個人嗎xD? 我看到你有一篇回復的回復標籤有我和超級版主,如何做到?
這是最終版了,可以計算3大失分,一樣文末有附檔。程式邏輯有點難解釋,主要是根據顏色區塊的不重複性,來做有效值得篩選判斷,因此在計算第一大失分時,條件是最寬鬆的,因為此時還沒有出現顏色區塊(select case m = 1)。計算第二大失分時,要避免i,j值跨過或落在黃色區塊,因此i,j值只有兩種狀況: 1.<黃色區塊的上界 2.>黃色區塊的下界。根據這種邏輯繼續去做第三大失分的邏輯判斷,計算第3大失分時,已經有黃顏與綠色兩大區塊,因此會有兩個上界和兩個下界,此時應先判斷黃色或綠色區塊誰在上方(select case 3裡面的if 上界(3) > 下界(2)...),再做失分計算判斷,此時資料有經被兩大顏色區塊切成3份,因此新的i,j值變成要落在這3份非顏色區塊裡面才是有效值,否則將與黃綠色區塊重複,大概的邏輯是如此,有些困難,但動手在紙上把圖畫出來,把上界和下界標上去應該會好懂些,此外,若無失分,會顯示失分為0。跟之前一樣,歡迎高手來改寫我這落落等的程式哈哈哈!!!
Dim 欄, 失分, 紀錄上界, 紀錄下界, 上界(1 To 3), 下界(1 To 3), i, j, Z As Integer
Sub 計算失分()
紀錄上界 = 0
紀錄下界 = 0
For 欄 = 1 To 7
For m = 1 To 3 '計算第m大失分
上界(m) = 紀錄上界
下界(m) = 紀錄下界
失分 = 0
For i = 1 To 14
For j = i + 1 To 15
Z = (Cells(i, 欄) - Cells(j, 欄))
If Z > 失分 Then
Select Case m
Case 1 '第一大失分計算
Call 紀錄
Case 2 '第二大失分的限制條件
If i < 上界(m) And j < 上界(m) Then
Call 紀錄
ElseIf i > 下界(m) And j > 下界(m) Then
Call 紀錄
End If
Case 3 '第三大失分的限制條件
If 上界(3) > 下界(2) Then
If i < 上界(2) And j < 上界(2) Then
Call 紀錄
ElseIf i > 下界(2) And j > 下界(2) And i < 上界(3) And j < 上界(3) Then
Call 紀錄
ElseIf i > 下界(3) And j > 下界(3) Then
Call 紀錄
End If
ElseIf 上界(2) > 下界(3) Then
If i < 上界(3) And j < 上界(3) Then
Call 紀錄
ElseIf i > 下界(3) And j > 下界(3) And i < 上界(2) And j < 上界(2) Then