返回列表 上一主題 發帖

請教陣列比對超過3個

本帖最後由 Andy2483 於 2023-3-7 10:52 編輯

回復 9# duck_simon


    #5樓範例與#1範例相同,是不是傳錯檔??無法更了解前輩的瓶頸在哪裡!
建議上傳更貼近需求的範例
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 10# hcm19522


    謝謝前輩,公式很難學,摸索中

用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 10# hcm19522

感謝大大..先來研究一下.. 謝謝

TOP

回復 10# hcm19522


  報告大大:  成功出來了.  哈哈. 這句話有點   哈哈:) 怎麼成功的.我也不知道..萬分感謝

TOP

回復 10# hcm19522


雖然函式出來了..不出現#VALUE!  .. 但驗證結果還是有錯..

TOP

回復 12# Andy2483


謝謝大大解說..我慢慢研究中..可否請大大驗證?

TOP

本帖最後由 准提部林 於 2023-3-7 22:40 編輯

一樓附檔//只適用純數值
=IF(OR(MMULT(1-ISERROR(RANK(B4:J12,B20:F20)),ROW(B4:B12)^0)>2),"X","")

Xl0000587.rar (4.17 KB)

TOP

回復  duck_simon


    #5樓範例與#1範例相同,是不是傳錯檔??無法更了解前輩的瓶頸在哪裡!
建議上傳更 ...
Andy2483 發表於 2023-3-7 10:40



   是的..一個範例檔(壓縮)..一個是實際應用檔

TOP

一樓附檔//只適用純數值
=IF(OR(MMULT(1-ISERROR(RANK(B4:J12,B20:F20)),ROW(B4:B12)^0)>2),"X","")
准提部林 發表於 2023-3-7 22:39



   感謝提部林 先進..代入後產生#VALUE...
IF(OR(MMULT(1-ISERROR(RANK($BH$1:$BR$13,N18:S18)),ROW($2:$12)^0)>2),"X","")
後改成 ROW(B4:B12)=ROW(B2:B12)    也驗證成功
真是怪異..辛苦三位先進..

TOP

回復 18# duck_simon


    謝謝前輩回復
後學繼續學習VBA方案的心得如下,請前輩參考
陣列比對A_20230308_3.zip (18.92 KB)

執行結果:


Option Explicit
Sub TEST_2()
Call 亂數重置

Dim Brr, xR As Range, i&, j&, A, B, V, Y
Set Y = CreateObject("Scripting.Dictionary")
Brr = [A1:J12]: [A1:J12].Interior.ColorIndex = xlNone: [K20] = ""
For Each xR In [B20:F20]
   Y(xR & "/") = xR.Interior.ColorIndex: V = V & "/" & xR
Next
For i = 4 To UBound(Brr)
i01:
   For j = 2 To UBound(Brr, 2)
      If B = 1 Then
         Cells(i, j).Interior.ColorIndex = Y(Cells(i, j) & "/")
         ElseIf InStr(V & "/", "/" & Brr(i, j) & "/") Then
            If Y("|") < 2 Then
               Y("|") = Y("|") + 1
               Else
                  B = 1: [K20] = "X": GoTo i01
            End If
      End If
   Next
   Y("|") = 0: B = 0
Next
Set Y = Nothing: Set Brr = Nothing
End Sub

Sub 亂數重置()
With [B4:J12]
   .Value = "=INT(MOD(RAND()*1000,49))+1"
   .Value = .Value
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題