これは、あなたが望む順序でユニークな言葉を入れます。
Sub foo()
Dim rng As Range
Dim ws As Worksheet
Dim i&, j&, t&
Dim dict As Object
Dim iArr() As Variant
Dim oarr() As Variant
Dim itm As Variant
Set dict = CreateObject("Scripting.Dictionary")
Set ws = ActiveSheet
With ws
Set rng = .Range("A:B").Find("*", .Range("A1"), , , , xlPrevious)
If Not rng Is Nothing Then
iArr = .Range(.Cells(2, 1), .Cells(rng.Row, 2)).Value
For i = LBound(iArr, 1) To UBound(iArr, 1)
For j = LBound(iArr, 2) To UBound(iArr, 2)
If iArr(i, j) <> "" Then
On Error Resume Next
dict.Add iArr(i, j), iArr(i, j)
On Error GoTo 0
End If
Next j
Next i
End If
'If your dataset is not that large <30,000, then you can use it directly with transpose
.Range("C2").Resize(dict.Count) = Application.Transpose(dict.items)
'If your data is large then you will want to put it in a one dimensional array first
'just uncomment the below and comment the one line above
' ReDim oarr(1 To dict.Count, 1 To 1)
' t = 1
' For Each itm In dict.keys
' oarr(t, 1) = dict(itm)
' t = t + 1
' Next itm
' Range("C2").Resize(dict.Count) = oarr
End With
End Sub
何それから、一つの列に二つのリストを組み合わせた使用について([「重複を削除」] https://support.office.com/en-us/article/Filter-for-unique- values-or-remove-duplicate-values-ccf664b0-81d6-449b-bbe1-8daaec1e83c2)Excelに組み込まれている関数ですか?フォーマットが終了する場合は、「xがリスト1、緑色、それ以外の場合はオレンジ」と言う条件付き書式を使用してください。何を試しましたか? – BruceWayne
実際には、組み合わせたリストがどのように視覚的補助としてソートされたかを強調する色を追加しましたが、それは要求の一部ではありません。リストを1つの列にまとめ、重複を取り除くと最初の結果が得られます。 –
@BruceWayneは、重複を削除する機能でこれを行うことができると述べています。実際にVBAを使用したい場合は、列を一緒に追加し、 'ActiveSheet.Range(" $ M $ 2:$ M $ 100 ")のようなものを使用してください。RemoveDuplicates Columns:= 1、Header:= xlYes'。 –