返回列表 上一主題 發帖

[發問] 計算套裝所得的級別

[發問] 計算套裝所得的級別

將L列每個向下順序套裝組合所得的級別, 顯示在O列每個套裝組合最後一個的相對之行數,計算套裝組合級別時, 套裝組合第一個必須跟上一行的一個不同, 及每個套裝組合不可重疊
檔案有想要的結果和現時計算的結果,請先進幫忙如何修改VBA, 謝謝!
test1C.zip (31.67 KB)

8個級別//標示8個顏色
准提部林 發表於 2024-1-28 10:30



   原來原先這個已經成功的,只要將級別定義改為之後准提部林先進後來的建議,再次感謝及因我的疏浪費先進時間,在此致歉.

TOP

我試用lastChar = Right(Tr(1), 1)來存儲當前匹配鍵的最後一個字符,然後檢查下一個單元格的內容與lastChar不同, 才開始繼續在L列向下檢查,但仍然不成功
  1. Sub Test_A1()
  2. Dim Arr, A, Brr, xD, i&, j&, T$, Tr, R, lastChar$
  3. Set xD = CreateObject("Scripting.Dictionary") '創建一個字典對象

  4. '遍歷一個數組,並將每個元素按"\"分割,然後將分割後的第二部分作為鍵,第一部分作為值存入字典
  5. For Each A In Array("1^12\優優良", "2^10\良良優", "3^3\優優優", "4^3\良良良", _
  6.                     "5^3\優良", "6^3\良優", "7^-3\優優", "8^-10\良良")
  7.     Tr = Split(A, "\")
  8.     xD(Tr(1)) = Tr(0)
  9. Next A

  10. '讀取Excel工作表中的一個範圍到Arr數組,然後根據Arr的大小重新定義Brr數組
  11. Arr = Range([L1], [L65536].End(xlUp)(5))
  12. ReDim Brr(1 To UBound(Arr), 0)

  13. '關閉屏幕更新,以提高代碼執行速度
  14. Application.ScreenUpdating = False

  15. '遍歷Arr數組,並根據字典中的條目對Excel工作表中的某些單元格進行格式化
  16. For i = 2 To UBound(Arr) - 4
  17.     T = Arr(i, 1)
  18.     If T <> Arr(i - 1, 1) Then
  19.        For j = i + 1 To i + 2
  20.            T = T & Arr(j, 1)
  21.            R = xD(T)
  22.            If R <> "" Then
  23.               Tr = Split(R, "^")
  24.               lastChar = Right(Tr(1), 1)
  25.               If Arr(j + 1, 1) <> lastChar Then
  26.                  With Range("L" & i & ":L" & j)
  27.                       .BorderAround 1
  28.                       .Interior.ColorIndex = Cells(Tr(0) + 2, 1).Interior.ColorIndex
  29.                  End With
  30.                  Brr(j - 1, 0) = Tr(1): i = j: Exit For
  31.               End If
  32.            End If
  33.        Next j
  34.     End If
  35. Next i

  36. '將Brr數組的內容寫入Excel工作表的一個範圍
  37. [o2].Resize(UBound(Brr)) = Brr
  38. End Sub
複製代碼

TOP

本帖最後由 cdkee 於 2024-1-29 16:32 編輯
回復  cdkee


A欄本來的字段都少了一個字???
"測試品"如何斷定???

完全對不上~~
准提部林 發表於 2024-1-29 16:14

是的,A欄本來的字段都少了一個字,就是本來每個組合的第一個,因為要配合另外一條件(新改的):每次發現任何套裝組合,之後必須發現與剛才發現的套裝組合中最後1個不同(為方便溝通稱這個做"測試品")(這是代替之前的條件:套裝組合第一個必須跟上一行的一個不同)
在檔案中的L1至L73例子中,已將"測試品"的底色顯示為紅色,方便識別及說明

TOP

回復 10# cdkee


A欄本來的字段都少了一個字???
"測試品"如何斷定???

完全對不上~~

TOP

組合的優先順序還是沒說清楚//


最好模擬各種狀況更完整, 反覆檢查正確的資料, 否則太花時間~~~
准提部林 發表於 2024-1-29 13:07

謝謝准提部林先進指導,以下檔案中,工作表1(2),L1至L73已模擬各種狀況套裝1-8
顯示單位,雙位或負數級別,已可以了,這段我可以自己更改級別,感謝先進幫助!
Xl0000209B.zip (48.44 KB)

TOP

組合的優先順序還是沒說清楚//


最好模擬各種狀況更完整, 反覆檢查正確的資料, 否則太花時間~~~
准提部林 發表於 2024-1-29 13:07


組合是沒有優先順序,對不起,之前沒有說清楚

TOP

組合的優先順序還是沒說清楚//
Xl0000209.rar (33.8 KB)

最好模擬各種狀況更完整, 反覆檢查正確的資料, 否則太花時間~~~

TOP

本帖最後由 cdkee 於 2024-1-28 17:41 編輯

回復 4# 准提部林

對不起,我之前的條件有遺漏,套裝組合也有更改,見檔案:
將L列每個向下順序套裝組合所得的級別, 顯示在O列每個套裝組合最後一個的相對之行數,計算套裝組合級別時,每個套裝組合不可重疊,另外一條件,每次發現任何套裝組合,之後必須發現與剛才發現的套裝組合中最後1個不同(為方便溝通稱這個做"測試品")(代替之前的條件:套裝組合第一個必須跟上一行的一個不同),才開始繼續在L列向下檢查
級別會有單位和雙位數或負數
Xl0000131B.zip (48.05 KB)

TOP

回復 3# 准提部林

L1 ~ L4 四個"良"為何不編碼, 至少有個"良良"符合吧!!!
准提部林 發表於 2024-1-28 09:33

因為有一條件:套裝組合第一個必須跟上一行的一個不同

TOP

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題