/ / VBA-Zellen einfügen, die im Wörterbuch in Zellen in einem anderen Arbeitsblatt gespeichert sind - Excel, VBA, Excel-VBA,

VBA-Zellen einfügen, die im Wörterbuch in Zellen in einem anderen Arbeitsblatt gespeichert sind - Excel, VBA, Excel-VBA, Wörterbuch

Ich versuche, eine Spalte von Zellen von einer zu durchsuchenFinden Sie alle eindeutigen Werte und fügen Sie diese Werte dann in eine Spalte in einem anderen Arbeitsblatt ein. Bisher habe ich Code, der ein Wörterbuch erstellt, die gewünschte Spalte durchsucht und alle eindeutigen Werte in dieser Spalte auswählt.

Function UniqueRequest() As Long

myReqIDCol = ColSearch("id")

"Creates a dictionary filled with each unique value in the "TaskIDList" column and counts them to determine how many unique keys are in the document
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To LastRow
tmp = Cells(i, myReqIDCol).Value
If Not dic.exists(tmp) Then
dic.Add tmp, 1
End If
Next i

End Function

Ich habe auch eine Funktion, die das Blatt auswählt, in das die Zellen eingefügt werden sollen, und es so einrichtet, dass Werte in jede leere Zelle in der gewünschten Spalte eingefügt werden.

Function ReqSheet(input_column As Integer, input_value As Long) As Long

Dim rv As Long

rv = 1

Sheets("Request Results").Activate
Do While Cells(rv, input_column).Value <> ""
rv = rv + 1
Loop
Cells(rv, input_column).Value = input_value

ReqSheet = input_value

End Function

Das Problem, das ich habe, ist, dass ich nicht ganz sicher binwie man diese beiden in Beziehung setzt. Ich möchte die ReqSheet-Funktion mit jedem Wert des Wörterbuchs aufrufen, aber alles, was ich versucht habe, ist fehlgeschlagen. Wenn dies eine einfache Lösung ist, kann ich leider keine gute Lösung aus dem Internet finden und bin ziemlich neu zu VBA.

Antworten:

1 für die Antwort № 1

Verwenden Sie diesen Code und ändern Sie die Spalte in das, was Sie verwenden möchten.

Function UniqueRequest() As Long

myReqIDCol = ColSearch("id")

"Creates a dictionary filled with each unique value in the "TaskIDList" column and counts them to determine how many unique keys are in the document
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To LastRow
tmp = Cells(i, myReqIDCol).Value
If Not dic.exists(tmp) Then
dic.Add tmp, 1
End If
Next i

For Each value in dic.keys
ReqSheet(4,value)  "I have taken column 4,you can change it to any no you want.
End Function

3 für die Antwort № 2

Das Gute an Wörterbüchern ist, dass Sie ihre Werte und Schlüssel in ein Array ziehen und alles in einem Bereich ohne Schleifen schreiben können.

Sub GetUnique()

Dim dc As Scripting.Dictionary
Dim rCell As Range

Set dc = New Scripting.Dictionary

For Each rCell In Selection.Cells
If Not dc.Exists(rCell.Value) Then
dc.Add rCell.Value, rCell.Value
End If
Next rCell

ThisWorkbook.Worksheets("Request Results").Range("A1").Resize(UBound(dc.Keys), 1).Value = _
Application.Transpose(dc.Keys)

End Sub

1 für die Antwort № 3

Etwas in dieser Richtung sollte funktionieren. Sie müssen nur das ersetzen input_column mit der richtigen Variable oder Methode, um die Spalte zu finden.

Function UniqueRequest() As Long

myReqIDCol = ColSearch("id")

"Creates a dictionary filled with each unique value in the "TaskIDList" column and counts them to determine how many unique keys are in the document
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To LastRow
tmp = Cells(i, myReqIDCol).Value
If Not dic.exists(tmp) Then
dic.Add tmp, 1
End If
Next i


For each _Value in dic

ReqSheet(input_column, _Value)

Next


End Function