Anzeige
Archiv - Navigation
1820to1824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahl bei doppelten Einträgen erhöhen?

Zahl bei doppelten Einträgen erhöhen?
22.03.2021 10:31:39
Sergej
Hallo Leute,
ich habe in Spalte K ab Zeile 5 ca. 38.000 Einträge. Die Spalte U ist als Text formatiert.
Nur wenn in Spalte K der Eintrag exakt 16 Zeichen hat, dann soll in Spalte K nach dessen Doppelgänger gesucht werden. Wenn der Eintrag doppelt vorkommt, dann soll der Eintrag in Spalte U um nächsten freien Zahl vom Doppelgänger erhöht werden.
Hinweis: Die Zahlen in Spalte U sind immer dreistellig (beispielsweise 001, 002, 003 usw.)
Wie mache ich das bitte per VBA?
Ich habe im Anhang eine kleine Beispieldatei beigefügt: https://www.herber.de/bbs/user/145011.xlsx
Beste Grüße,
Sergej

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 11:17:05
Daniel
HI
so ganz klar ist mir dein Wunsch nicht.
kannst du mal in der Beispieldatei in Spalte V darstellen, wie das Ergebnis für gezeigte Beispiel aussehen soll?
Was sind "nächste freien Zahlen"?
was ist, wenn der Wert nicht doppelt, sondern noch öfters vorkommt?
Gruß Daniel

AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 12:23:16
Sergej
Hallo Daniel,
ich habe es zur besseren Verständnis die Beispieldatei vereinfacht und in der Spalte V das Ergebnis eingetragen. Meine Formulierung war vielleicht nicht eindeutig. Die Spalte und Spalte U müssen zusammenbetrachtet werden, um doppelte Einträge zu finden.
Beispiel:
AGLK519RC---0009 ist in obiger Betrachtung nur zwei Mal doppelt. Die nächste freie Nummer für AGLK519RC---0009 wäre die 081. Diese habe ich in V13 eingetragen.
https://www.herber.de/bbs/user/145016.xlsx
Beste Grüße,
Sergej

Anzeige
AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 19:39:07
Daniel
Hi
dann probier mal dieses Makro.
um das zu verstehen, sind allerdings schon fortgeschrittene Kenntnisse erforderlich (Dictionary-Objekt)
Sub test()
Dim dicMax As Object
Dim dicDup As Object
Dim arrK, arrU
Dim rngK As Range, rngU As Range
Dim z As Long
Dim ID As String
Set dicMax = CreateObject("scripting.dictionary")
Set dicDup = CreateObject("scripting.dictionary")
Set rngK = Range(Cells(5, "K"), Cells(5, "K").End(xlDown))
Set rngU = rngK.Offset(0, 10)
arrK = rngK.Value
arrU = rngU.Value
For z = 1 To UBound(arrK, 1)
If Len(arrK(z, 1)) = 16 Then
If CLng(arrU(z, 1)) > dicMax(arrK(z, 1)) Then dicMax(arrK(z, 1)) = CLng(arrU(z, 1))
End If
arrU(z, 1) = "'" & arrU(z, 1)
Next
For z = 1 To UBound(arrK, 1)
If Len(arrK(z, 1)) = 16 Then
ID = arrK(z, 1) & "-" & arrU(z, 1)
If dicDup.exists(ID) Then
dicMax(arrK(z, 1)) = dicMax(arrK(z, 1)) + 1
arrU(z, 1) = "'" & Format(dicMax(arrK(z, 1)), "000")
End If
dicDup(ID) = dicDup(ID) + 1
End If
Next
rngU.Offset(0, 1).Value = arrU
End Sub
Teste mal obs tut, zu kontrollzwecken wird der wert in Spalte U nicht überschrieben sondern das Ergebnis wird in die Nachbarspalte eingefügt.
Wenns passt, kannst du ja in der letzten Zeile das OFFSET löschen.
Gruß Daniel

Anzeige
AW: Zahl bei doppelten Einträgen erhöhen?
23.03.2021 14:18:23
Sergej
Hallo Daniel,
es sieht sehr gut aus! Vielen herzlichen Dank!
Das mit der Nachbarspalte ist praktisch, um das Ganze vorher zu überprüfen. Was muss ich bitte ändern, damit in der Nachbarspalte nur die Einträge für betroffene Zeilen (sprich die mit 16 Zeichen als Voraussetzung) eingetragen werden. Aktuell werden in der Nachbarspalte auch alle andere Zeilen berücksichtigt.
Beste Grüße,
Sergej

AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 11:25:49
Günther
Moin Sergej,
ich sage es mal ganz vorsichtig: Du willst eine VBA-Lösung, bietest aber NULL Eigenleistung in Form eines grundsätzlichen Codes wo Helfer gezielt ergänzen oder korrigieren können. Das würde ja bedeuten, dass du eine Komplettlösung haben willst? ☹
Dazu kommt dann noch, dass ich nicht verstehe, was du mit "dann soll der Eintrag in Spalte U um nächsten freien Zahl vom Doppelgänger erhöht werden" meinst. Da fehlt das eine oder andere Muster-Ergebnis. Ich habe das einmal ohne VBA mit Power Query gelöst, stelle aber aus prinzipiellen Erwägungen nur mein Ergebnis vor: => https://pchilfenord-my.sharepoint.com/:x:/g/personal/g_mumme_pc-hilfe-nord_de/EY98lM_AK4hBiakvgvY5vZYBGPnA5MF1BxdZF1ajddA_Yw?e=MVuLbU (eventuell Rechtsklick)
 
Gruß
Günther  |  mein Excel-Blog
-.-.-.-

Da ich mich nicht mehr über den "eigenwilligen" Hindernislauf beim Foren-Upload ärgern will, stelle ich meine Uploads hier nur noch in meiner MS-Cloud zur Verfügung. Den Link findest du im Beitrags-Text. Abrufe sind natürlich freiwillig und werden selbstredend nicht ausgewertet.



Anzeige
AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 12:25:33
Sergej
Hallo Günther,
mir sagt "Power Query" wenig :-) Das werde ich mir jetzt anschauen.
Ich habe eine neue Datei in der Nachricht an Daniel beigefügt und meine Formulierung ein wenig überabeitet, da sie nicht eindeutig war.
Beste Grüße,
Sergej

AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 14:02:27
Günther
Okay Sergej,
bis zur Zelle V7 verstehe ich das und kann das auch gut nachvollziehen. Aber die "081" kann ich nicht nachvollziehen…
Wahrscheinlich kannst du das auch mit ZÄHLENWENNS() oder natürlich mit Power Query lösen (mal abgesehen von dem 9^2-Ergebnis).
 
Gruß
Günther  |  mein Excel-Blog

Anzeige
AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 14:04:45
Günther
Korrektur: Ich meine natürlich "bis zu Zelle V12" und das Fragezeichen in V13! ☺
 
Gruß
Günther  |  mein Excel-Blog

AW: Zahl bei doppelten Einträgen erhöhen?
22.03.2021 19:54:24
Daniel
HI Günther
das ist einfach:
die AGLK519RC---0009 kommt 3x vor, zweimal mit 005 als Begleitwert (Spalte U) und einmal mit 080 als Begleitwert
die Zeile mit 005 als Begleitwert ist also doppelt und muss einmal mit einem neuen Begleitwert für Spalte U versehen werden.
Damit bereits vorhandene Begleitwerte nicht versehentlich verwendet werden und somit neue Doppler entstehen, wird als neuer Begleitwert der höchste für AGLK519RC---0009 verwendete Begleitwert (dh hier die 080) ermittelt und um 1 erhöht, daher die 081 als Ersatzwert.
ich denke, mit diesem wissen kannst du eine PQ-Lösung erstellen und uns allen den Lösungsweg vorstellen.
Gruß Daniel

Anzeige
und ich dachte nur ich hätte das nicht kapiert. :)
22.03.2021 12:23:48
ralf_b
möglicherweise möchte er die vorhandenen Mehrfachnennungen einfach nur hochzählen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige