今天,同事發給我一個表格,需要制作紙箱唛頭,但是她裡面的型号有些是重複的,由于excel中自帶的函數不具備去除重複值得功能,所以隻能利用vba來自己編寫函數,見圖:
但是這些重複的内容都是以固定的符号隔開的,所以,我們利用數組和字典方案解決。
首先,我們打開這個工作表,然後選擇文件-選項-自定義功能區-開發者工具,勾選,确定。如下圖
然後按下ALT F11組合鍵盤,彈出vba開發窗口,然後點擊插入——模塊
随便插入一個模塊就行哈,然後雙擊模塊,把下面這段黃色背景代碼複制到右邊的空白區域就可以
Public Function 提取不重複值(ByVal 單元格 As Range, ByVal 間隔符号 As String) As String '定義函數過程,值傳遞,返回值類型為字符串
'字典調用方法一:引用法(前期綁定)
'vba ide-工具-引用-浏覽-windows-system32找到scrrun.dll-确定
'Dim 字典 As Object '定義一個字典變量,貌似後期聲明字典不起作用
'Set 字典 = CreateObject("scripting.Dictionary")'貌似後期聲明字典不起作用
'*******************************定義區域*****************************************
Dim 字典 As New Dictionary '定義一個字典變量
Dim 結果 As String '定義結果
Dim 數組 As Variant '定義一個數組
Dim 數組元素 As Variant '定義一個數組元素
Dim 字典條目 As Variant '定義一個數組元素
Dim rng As Range
'*******************************代碼開始區域*****************************************
'功能一
If Len(間隔符号) >= 0 Then
數組 = Split(單元格.Value, 間隔符号) '利用拆分函數通過固定間隔符号對内容進行元素拆分
For Each 數組元素 In 數組 '遍曆數組元素
字典(Trim(數組元素)) = "" '這裡把每個元素所對應的條目進行修改,字典的特性是沒有這個條目就把這個條目加進去,順便清除重複項
Next
End If
'功能二
For Each 字典條目 In 字典 '提取字典裡的條目寫入單元格
結果 = 結果 & 間隔符号 & 字典條目 '将其字符串連接
Next
提取不重複值 = Replace(結果, 間隔符号, "", 1, 1)
字典.RemoveAll
End Function
'*******************************代碼結束區域*****************************************
結果如下顯示:
然後我們就要手動加載 字典了
還是這個vba窗口,工具-引用-浏覽-windows-system32找到scrrun.dll-确定,就加載完成
然後我們就可以在表格中輸入函數了
結果如下圖:
好了,今天的學習就到這,謝謝大家
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!