返回列表 上一主題 發帖

關於Scripting.Dictionary除了過濾重複值,是否可以同時忽略空值?

關於Scripting.Dictionary除了過濾重複值,是否可以同時忽略空值?

問題.rar (55.16 KB)

正常時會過濾重複


當出現空值時則異常



還是說不適合使用Scripting.Dictionary

回復 1# av8d

建議空白可以直接排除,謝謝

TOP

回復 2# samwang


    說來慚愧,這段程式碼是由網路複製貼來的,
    我努力學習及理解中,謝謝抽空解答。

TOP

本帖最後由 av8d 於 2021-10-6 01:21 編輯

回復 2# samwang

研究了許久,也透過搜索"Scripting.Dictionary",查看了關於您的範例
但還是無法推敲出結果,還請賜教,

因為空值隨時會被填入資料,所以是否能暫時忽略,
但是當填入時,就會算入。

TOP

回復 4# av8d

因為空值隨時會被填入資料,所以是否能暫時忽略,
但是當填入時,就會算入。
>>更改如下,謝謝
For Each A In .Range("B4", .[B65536].End(xlUp))
            If A.Value = "" Then GoTo 99
            d(A.Value) = ""
  '只取B欄不重複值
            'd(A.Value) = IIf(d(A.Value) = "", A.Offset(, 1).Value, d(A.Value) & "," & A.Offset(, 1))
99:     Next

TOP

回復 5# samwang

  謝謝前輩,真的是豁然開朗,學習了許多新知識,由衷感謝。

TOP

For Each A In .Range("B4", .[B99].End(xlUp))
            'd(A.Value) = IIf(d(A.Value) = "", A.Offset(, 1).Value, d(A.Value) & "," & A.Offset(, 1))
            If A.Value <> "" Then d(A.Value) = "" '排除空值
Next
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 av8d 於 2021-10-15 15:05 編輯

回復 7# ML089

使用後發現會保留空值一個,
原來也可以這樣寫,萬分感謝,學習了。

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖學習到清單知識與字典的運用,學習方案如下,請各位前輩指教

點選清單結果:



Option Explicit
Private Sub ComboBox1_Change()
Dim A As Range, d As Object
Set d = CreateObject("Scripting.Dictionary")
With Sheets("我的知識庫")
   For Each A In .Range("B4", .[B65536].End(xlUp)).SpecialCells(2)
      d(A.Value) = ""
   Next
   ComboBox1.List = d.keys
End With
End Sub

Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    '觸發ComboBox1_Change
    ComboBox1.Value = "."
    ComboBox1.Value = ""
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 6# av8d


    If d.exists("") Then d.Remove ""

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題