返回列表 上一主題 發帖

[轉貼] 討論不重複清單

[轉貼] 討論不重複清單

本帖最後由 Hsieh 於 2010-6-19 11:08 編輯

http://gb.twbts.com/index.php/topic,466.0.html
舊站以上連結曾經討論過此一問題
其中附件大都遺失,把他歸納一下供大家參考
有更好公式歡迎繼續參與討論
不重複清單.rar (7.78 KB)
學海無涯_不恥下問

本帖最後由 sunnyso 於 2013-4-30 23:50 編輯

回復 11# Hsieh
回復 13# gong

剛剛想到另一種方法不用 MAX, LARGE 等陣列函數和動態範圍的方法, (本來以爲MAX, LARGE等陣列函數的效率較低), 不過好像還是動態範圍有效率

數據在A欄

加輔助欄O
O1 = 0
O2 = IF(COUNTIF(A$2:A2,A2)=1,((8*SUM(L$1:L1)+1)^0.5-1)/2+1,"")
下拉

不重覆數據
P2 = INDEX(A:A,MATCH(ROW(A1),O:O,0))
下拉

真的想知道哪種方法最有效率. 請大大寫一段code來計算一下各種方法所需的計算時間
不重複清單 Sonny V2.rar (21.03 KB)
ss

TOP

回復 17# gong

感謝 gong 大大, 又學到一種方法.

不過用動態範圍要比用 MAX 更有效率.

數據在A欄

加輔助欄I, J
I2 =COUNTIF(OFFSET($A2,,,COUNTA(A:A)-1,),A2)
J1 = 0
J2 =MATCH(1,OFFSET($I$2,J1,,COUNTA(A:A)-1,),0)+J1
下拉

不重覆數據
K2 = IFERROR(INDEX(A:A,J2+1),"")
下拉

====================================
用字典法寫了VBA Function UNIQUEp

N2=IFERROR(UNIQUEp(A:A,ROW()),"")
下拉

不知哪位大大可否寫一段code來計算一下各種方法所需的計算時間
  1. Function UNIQUEp(source As Range, num As Integer)
  2.     Dim newArray, myArray As Variant
  3.     rows_num = source.Rows.Count
  4.     'myArray = Range(Cells(source.Row, source.Column), Cells(source.Row + rows_num - 1, source.Column)).Value
  5.     myArray = Sheets(source.Parent.Name).Range(source.Address).Value
  6.    
  7.     Set Dic = CreateObject("scripting.dictionary")
  8.     For i = 1 To rows_num
  9.     If myArray(i, 1) <> "" Then
  10.         Dic((myArray(i, 1))) = ""
  11.     End If
  12.     Next
  13.    
  14.     arr = Dic.Keys
  15.    
  16.     UNIQUEp = arr(num - 1)
  17. End Function
複製代碼
不重複清單 Sonny.rar (20.05 KB)
ss

TOP

回復 20# ANGELA
謝謝 ANGELA
已經解決問題了

TOP

=IF(ROW(1:1)>MAX(B:B),"",INDEX(A:A,MATCH(ROW()-1,B:B,0)))

TOP

本帖最後由 charce 於 2012-1-3 04:01 編輯

回復 17# gong
個人摹仿上方gong的函數進行練習,發現總是會缺掉最後的一筆資料
問題是出在那邊呢?可不可以指正一下
謝謝您

TOP

本帖最後由 OFFICE專家 於 2011-1-7 22:37 編輯

這則裡面有
[原創] Excel 進階篩選大全
不恥下問,不斷學習,才會進步

TOP

本帖最後由 gong 於 2010-7-2 09:13 編輯

重覆資料在A欄

加輔助欄B
B2=IF(COUNTIF(A$2:A2,A2)=1,MAX(B$1:B1)+1,"")
下拉

不重覆數據
C2=IF(ROW()>MAX(B:B),"",INDEX(A:A,MATCH(ROW()-1,B:B,0)))
下拉

Book1.rar (2.14 KB)

知之為知之,不知為不知,誠實也!

TOP

回復 15# 老夏

謝謝夏版主
我覺得您這個最好用
而且不會當機.....又不用喝咖啡等時間...




謝謝您

TOP

回復 14# victorl
回復 13# gong
回復 12# asimov

所以結論
1."重算儲存格"是正常現象
2.所以減少使用大量的陣列公式,有助於提升工作效率喔
3.純研究可行,如用於實務上經常會跑不動
   幾乎不會用於實務上
   基本上陣列公式可透過輔助欄可以輕鬆完成

非常謝謝各位先進及版主的回答

TOP

        靜思自在 : 口說一句好話,如口出蓮花;口說一句壞話如口吐毒蛇。
返回列表 上一主題