- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 142
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2026-7-16
                
|
本帖最後由 Hsieh 於 2011-3-26 13:31 編輯
回復 9# a703130
If d.Exists(Cells(R, 2).Value) = False Then
之所以使用字典來檢查是否該索引已經存在,是因為你的計數位置是在該所引的第一個位置顯示
從第2個位置以後就不再顯示結果,故必須判斷索引是否存在
Cells(R, 3) = Application.CountIf(Columns("B"), Cells(R, 2))
將計數的值填入C欄
d(Cells(R, 2).Value) = Cells(R, 2).Value
將索引值存到字典物件中,注意一點,若索引值對應的內容是d(Cells(R, 2).Value) =""時,Exists方法會得到FALSE
也就是認為該所引值不存在於字典物件
如果這樣無法理解,試試下面程式碼
由下往上來做迴圈- Sub nn()
- r = [B65536].End(xlUp).Row 'B欄有資料的最大列位
- Do Until Cells(r, 2) = "" '直到B欄沒有內容結束迴圈
- Set a = Cells(r, 2) '設定變數a為欄位的儲存格
- Set b = Range([B1], a.Offset(-1, 0)).Find(a) '在B1到的上一個儲存格中尋找a
- '如果找不到就將計數寫入C欄,否則C欄位置就清空
- If b Is Nothing Then a.Offset(, 1) = Application.CountIf(Columns("B"), a) Else a.Offset(, 1) = ""
- r = r - 1 '列位減1
- Loop
- End Sub
複製代碼 |
|