Mit zwei Blättern genannt 1
und 2
Innenblatt mit dem Namen: 1
+----+-----------------+
| | A |
+----+-----------------+
| 1 | Name of company |
| 2 | Company 1 |
| 3 | Company 2 |
| 4 | |
| 5 | Company 3 |
| 6 | Company 1 |
| 7 | |
| 8 | Company 4 |
| 9 | Company 1 |
| 10 | Company 3 |
+----+-----------------+
Ergebnis in Blatt mit dem Namen: 2
+---+-----------------+
| | A |
+---+-----------------+
| 1 | Name of company |
| 2 | Company 1 |
| 3 | Company 2 |
| 4 | Company 3 |
| 5 | Company 4 |
+---+-----------------+
Verwendung Dieser Code in einem normalen Modul:
Sub extractUni()
Dim objDic
Dim Cell
Dim Area As Range
Dim i
Dim Value
Set Area = Sheets("1").Range("A2:A10") 'this is where your data is located
Set objDic = CreateObject("Scripting.Dictionary") 'use a Dictonary!
For Each Cell In Area
If Not objDic.Exists(Cell.Value) Then
objDic.Add Cell.Value, Cell.Address
End If
Next
i = 2 '2 because the heading
For Each Value In objDic.Keys
If Not Value = Empty Then
Sheets("2").Cells(i, 1).Value = Value 'Store the data in column D below the heading
i = i + 1
End If
Next
End Sub
Der Code gibt das Datum unsortiert zurück, genau wie die Daten angezeigt werden.
, wenn Sie eine sortierte Liste wollen, fügen Sie einfach diesen Code vor dem las Zeile:
Dim sht As Worksheet
Set sht = Sheets("2")
sht.Activate
With sht.Sort
.SetRange Range("A:A")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Auf diese Weise wird das Ergebnis immer sortiert werden.
Sub extractUni()
Dim objDic
Dim Cell
Dim Area As Range
Dim i
Dim Value
Set Area = Sheets("1").Range("A2:A10") 'this is where your data is located
Set objDic = CreateObject("Scripting.Dictionary") 'use a Dictonary!
For Each Cell In Area
If Not objDic.Exists(Cell.Value) Then
objDic.Add Cell.Value, Cell.Address
End If
Next
i = 2 '2 because the heading
For Each Value In objDic.Keys
If Not Value = Empty Then
Sheets("2").Cells(i, 1).Value = Value 'Store the data in column D below the heading
i = i + 1
End If
Next
Dim sht As Worksheet
Set sht = Sheets("2")
sht.Activate
With sht.Sort
.SetRange Range("A:A")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Wenn Sie Fragen über den Code haben (Die subrutine so sein würde), ich werde froh zu erklären.
Hallo, @ Garys Schüler. Hast du das auf einem Tisch probiert? Ich habe immer noch das Leerzeichen direkt unter der Kopfzeile in Blatt2. Der Rest scheint in Ordnung zu sein. –
Ich bekomme meine Firmennamen mit einer Formel basierend auf anderen Spalten von Blatt1, nicht sicher, ob es relevant ist. Auch ich bin auf automatische Berechnung umgestiegen und jetzt bekomme ich nur den Header und ein #REF! darunter . Ich weiß nicht, was ich machen soll. –
@carlos_cs Ich werde versuchen, den Code zu ändern, um ** beide ** Probleme zu behandeln. –