Board logo

標題: [發問] 找出不同值的各項 [打印本頁]

作者: yangjie    時間: 2012-9-11 23:28     標題: 找出不同值的各項

求教於各位大大
        如何於MyRange1內 找出只要不同值的各項共幾項?共哪幾項?以 d(n)表示?
又 for i=1 to  n
           combobox1.additem     d(i-1)?或----
     next
上述是要將 不同值的各項 增至 combobox1
要如寫法?
謝謝
作者: Hsieh    時間: 2012-9-11 23:35

回復 1# yangjie

Set d = CreateObject("Scripting.Dictionary")
Set Rng = Range("A1:A20")
For Each a In Rng
d(a.Value) = ""
Next
MsgBox d.Count  '項目數量
ComboBox1.List = d.keys    '寫入清單
作者: yangjie    時間: 2012-9-12 00:06

回復 2# Hsieh
太棒了
請教H大大
問題1.    d(a & "")=array(a.offset(,1))   與 d(a.value)=""   把我搞混了  尤其是 那兩個 ""
問題2.    Set d = CreateObject("Scripting.Dictionary")
               With Sheets("存查")
                         For Each a In .Range(.Cells(2, 2), .Cells(65536, 2).End(xlUp))
                                              d(a.Value) = ""
                         Next
               End With
               If d.Count = 0 Then Exit Sub
               ComboBox1.List = d.keys
       若要加一的條件 於column(an1)有="string1"   之 下作相異篩選 d(a.Value)            那條件column(an1)有="string1"應加在哪兒?
作者: Hsieh    時間: 2012-9-12 10:36

本帖最後由 Hsieh 於 2012-9-12 18:27 編輯

回復 3# yangjie


    Dictionary物件的兩個重要元素key與item
key是不能重複的索引值,正規一點的添加key應該使用add方法
如果使用add方法加入索引,必須先判斷是否該索引值已經存在,若重複add時將會產生錯誤
在這邊使用d(key)=item這樣的方式加入索引,只是會改變相對於key的item
此例中d(A & "")這是將key值,使用A變數轉成字串資料型態的方式作為索引
d(A.Value)=""
這是將儲存格變數A取出值作為索引值,而相對應的item都是以空字串為內容(可節省記憶空間)
此兩種寫法key都會得到一個不重複值的陣列

要加入條件判斷,則可再添加Key時做判斷
此例判斷Columns(cn1)有"string"字串才加入索引
If InStr(Cells(A.row,cn1),"string")>0 Then d(A &"")=A
作者: yangjie    時間: 2012-9-12 18:15

回復 4# Hsieh
感謝H 大大說明
完全明瞭




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)