我有一個帶有技能的Excel列的資料集,其中一些單元格有一個以上的技能。我想把有多種技能的單元格分割成每一個單元格,然后只保留唯一的值。這就是我目前正在嘗試做的事情:
我想讓我的客戶對我的作業有更多的了解。
我希望能夠輸入范圍和分隔符,因為我正試圖將解決方案通用化 我在第12行得到一個錯誤,當我試圖將一個名稱定義的范圍分配給Rng。該錯誤是 物件變數或與塊變數沒有設定 這就是我所困惑的地方,因為我已經宣告了所有的變數。
下面是一個包含以下內容的列單元格的作業實體: 業務分析
商業分析;資料分析;網路;溝通技巧;
演講技巧;資料分析;解決問題;
解決問題; 問題解決; 問題解決;業務分析;溝通技巧;
預期產出應該是: 然后我就可以過濾它們的唯一值了。
uj5u.com熱心網友回復: 下面是我想出來的一些方法,可以把你的代碼濃縮一下:
標籤: Dim Separator As String
Dim Rng As Range
Dim myCell As Range
Dim SplitArr() As String
Dim NumofElements As Integer[/span
Dim MyArray() As String
Dim X As Integer[/span
Dim i As Integer
'獲得分離器和命名范圍
Separator = InputBox("在此輸入分隔符:"/span>)
Rng = InputBox("在此輸入范圍:")
'分割字串并將其添加到一個陣列中。
X = 0
ReDim Preserve MyArray(X)
For Each myCell In Rng
If myCell <> ""/span> Then
SplitArr = Split(myCell.Value, Separator)
NumofElements = UBound(SplitArr) 1
X = X NumofElements
ReDim Preserve MyArray(0 To X)
For i = 0 To NumofElements
MyArray(X i) = SplitArr(i)
Next i
擦除 SplitArr
結束 If
下一步 下一步
'粘貼陣列到worksheeet
Range(Rng).Offset(0, 1) = WorksheetFunction.Transpose(MyArray)
End Sub
Sub GetUnique()
Dim sep As String, arr() As String
Dim rng As Range
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary" )
sep = Application.InputBox("Enter the Separator Here: ", Type:=2)
Set rng = Application.InputBox("Enter Range Here: ", Type:=8)
arr = Split(Join(Application.Transpose(rng), sep), sep)
For Each el In arr
If el <> ""/span> Then
dict(Trim(el)) =1
結束 若
下一步 下一步
rng.Offset(0, 1).Resize(dict.Count).Value = Application.Transpose(dict.Keys)
End Sub
