返回列表 上一主題 發帖

想找出與前一列重複的數字

好的,我再測試看看,謝謝大大

TOP

P欄設為文字格式~~

Sub TEST_A01()
Dim Arr, xD, i&, j%, T$, TT$
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([m1], [a65536].End(xlUp))
For i = 1 To UBound(Arr)
For j = 1 To UBound(Arr, 2)
    T = Arr(i, j): xD(T & "/" & i) = 1
    If xD(T & "/" & i - 1) = 1 Then TT = TT & "," & T
Next j
    Arr(i, 1) = Mid(TT, 2): TT = ""
Next i
[p1].Resize(UBound(Arr)) = Arr
End Sub


'==============================

TOP

字典隨取隨消, 減少佔用資源~~

Sub TEST_A02()
Dim Arr, Brr, xD, i&, j%, TT$
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([m1], [a65536].End(xlUp))
ReDim Brr(1 To UBound(Arr), 0)
For i = 2 To UBound(Arr)
    For j = 1 To UBound(Arr, 2)
        xD(Arr(i - 1, j) & "") = 1
    Next j
    For j = 1 To UBound(Arr, 2)
        If xD(Arr(i, j) & "") = 1 Then TT = TT & "," & Arr(i, j)
    Next j
    Brr(i, 0) = Mid(TT, 2): TT = "": xD.RemoveAll
Next i
[p1].Resize(UBound(Brr)) = Brr
End Sub


.==============================

TOP

回復 13# 准提部林

字典隨取隨消, 減少佔用資源~~
>> 感謝准大分享,寫得精簡了,發現自己寫的太複雜,#12樓的寫法第1次看過,
真的不好理解,要好好的研究學習一下,謝謝。

TOP

回復 14# samwang


12F

讓字典的key夾帶 i 值
當 i=1 時
將 xd(T & "/" & 1)=1 加入字典,
同時檢查 xd(T & "/" &  0) 是否在字典中, 因是第1行, 所以都為"空值",

當 i=2 時
將 xd(T & "/" & 2)=1 加入字典,
同時檢查 xd(T & "/" &  1) 是否在字典中, 因是第2行, 只要字典key帶1的, 即是上下行相同

類推~~
這方法讓所有數字都因行號不同而全部納入字典, 各自成為獨立的key值,
缺點: 字典會放太多資料

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列,學習方案如下,請各位前輩指教

執行結果:



Option Explicit
Sub TEST()
Dim Brr, i&, j%, A$, Q$, TT$, T$
'↑宣告變數
Brr = Range([M1], [A65536].End(xlUp))
'↑令Brr變數是 二維陣列,以A~M欄儲存格值帶入陣列中
For i = 1 To UBound(Brr)
'↑設順迴圈i
   For j = 1 To UBound(Brr, 2)
   '↑設順迴圈j
      T = Brr(i, j)
      '↑令T變數是 迴圈Brr陣列值
      If InStr(A, "/" & T & "/") Then TT = TT & "," & T
      '↑如果A變數 包含了以(T變數在前後包夾"/"的新字串)??
      '↑令T變數納入TT變數後方,以逗點隔開,成為新字串
      '(當i=1時,A是初始值"",所以條件都不會成立)

      Q = Q & "/" & T & "/"
      '↑令Q變數收集該迴圈的陣列值,做為下一迴圈的A變數
   Next j
   Brr(i, 1) = Mid(TT, 2): TT = "": A = Q: Q = ""
   '↑令Brr陣列第1欄寫入符合條件的數字
Next i
[P1].Resize(UBound(Brr)) = Brr
'↑令Brr陣列值從[P1]開始寫入儲存格裡,超過此範圍的陣列值忽略
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

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