Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array ohne Duplikate, wenn Zelle gefüllt

Array ohne Duplikate, wenn Zelle gefüllt
21.01.2017 18:15:51
Gert
Hallo zusammen!
Ich habe nun verschiedene Lösungsansätze aus diesem Froum (und Fremdquellen) probiert, aber ich habe mein Problem nicht gelöst bekommen.
Ich habe eine Liste mit Mitarbeiterdaten, die aus eine externen Datei kopiert werden. (Das funktioniert auch soweit.) Nun soll wenn eine Kostenstelle (Spalte F) übergeben wird, die Mitarbeiternr. aus der Spalte I ohne Mehrfachnennung in ein Array geschrieben werden. Bei der Erstnennung der Mitarbeiternr. soll auch die Kostenstelle und der Name in das Array geschrieben werden.
Zu einem späteren Zeitpunkt sollen dann diese Daten (ohne Duplikate) auf einem anderen Tab in eine Liste geschrieben werden.
Den Dateiaufbau mit mit zwei unterschiedlichen Macros habe ich hochgeladen.
https://www.herber.de/bbs/user/110784.xlsm
Entweder ich bekomme die Fehlermeldung "subscription out of range" oder es fehlen Eintragungen. Ich bekomme den Knoten einfach nicht gelöst.
Über einen entsprechenden Tipp was ich falsch mache würde ich mich SEHR freuen.
Ich bedanke mich schon einmal für die Unterstützung.
Gert

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array ohne Duplikate, wenn Zelle gefüllt
21.01.2017 19:50:22
Beverly
Hi Gert,
vielleicht so:
Sub OhneDoppelte()
Dim lngZeile As Long
Dim varZaehler As Variant
Dim lngZaehler As Long
Dim arrDaten
Dim arrHilfe
ReDim arrDaten(1, 0)
ReDim arrHilfe(0)
For lngZeile = 6 To IIf(IsEmpty(Cells(Rows.Count, 9)), Cells(Rows.Count, 9).End(xlUp).Row,  _
Rows.Count)
If Cells(lngZeile, 6)  0 Then
varZaehler = Application.Match(Cells(lngZeile, 9), arrHilfe, 0)
If Not IsNumeric(varZaehler) Then
ReDim Preserve arrHilfe(0 To lngZaehler)
arrHilfe(lngZaehler) = Cells(lngZeile, 9)
ReDim Preserve arrDaten(0 To 1, 0 To lngZaehler)
arrDaten(0, lngZaehler) = Cells(lngZeile, 6)
arrDaten(1, lngZaehler) = Cells(lngZeile, 10)
lngZaehler = lngZaehler + 1
End If
varZaehler = ""
End If
Next lngZeile
Worksheets("Tabelle2").Range("A1").Resize(lngZaehler, 1) = Application.Transpose(arrHilfe)
Worksheets("Tabelle2").Range("B1").Resize(lngZaehler, 2) = Application.Transpose(arrDaten)
End Sub


Anzeige
AW: Array ohne Duplikate, wenn Zelle gefüllt
22.01.2017 14:04:41
Gert
Hallo Karin,
VIELEN DANK für die schnelle Rückmeldung und den Code.
Ich habe deinen noch nicht getestet.
Da der von Onur etwas kürzer war, habe ich diesen angepasst und verwendet.
Trotzdem herzlichsten Dank !!!!!
Gert
AW: Array ohne Duplikate, wenn Zelle gefüllt
21.01.2017 21:14:00
onur
Hallo Gert,
oder so:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column  6 Then Exit Sub
mcr_Test
End Sub
Das hier in einem modul:
Global MaNa(120) As Variant
Global MaNr(120) As Variant
Global MaKSt(120) As Variant
Global anz As Integer
Sub mcr_Test()
Dim neu As Boolean
Dim nr, z As Integer
z = 6: anz = 0
While Cells(z, 6) ""
neu = True
For nr = 1 To anz
If MaNa(nr) = Cells(z, 10) Then neu = False
Next nr
If neu Then
MaNa(nr) = Cells(z, 10) 'MA_Name
MaNr(nr) = Cells(z, 9) 'MA_Nr
MaKSt(nr) = Cells(z, 6) 'Name
anz = anz + 1' Anzahl Mitarbeiter
End If
z = z + 1
Wend
End Sub
Anzeige
AW: Array ohne Duplikate, wenn Zelle gefüllt
22.01.2017 13:58:25
Gert
Hallo Onur,
vielen Dank für den Code. Funktioniert einwandfrei!
Eine Frage: Verstehe ich das richtig, dass mit Global MaNa(120) As Variant das Array auf max. 120 Einträge festgelegt wird?
Nochmals vielen Dank!
Gert
AW: Array ohne Duplikate, wenn Zelle gefüllt
22.01.2017 18:57:00
onur
Genau - Kannst du bei bedarf ändern.
Durch "Global" kannst du die variablen jederzeit und überall benutzen, sie werden nicht beim verlassen des subs gelöscht.
AW: Array ohne Duplikate, wenn Zelle gefüllt
25.01.2017 12:59:02
Gert
Hallo Onur,
Spät aber nicht weniger dankbar:
Vielen Dank für die kurze Erklärung!
"Happy Day"
Gert

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige