Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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

Neuen Wert in Spalte nach Duplizierung löschen

Neuen Wert in Spalte nach Duplizierung löschen
05.03.2024 08:46:15
Holger76
Hallo zusammen,

ich bin seit einer Weile mit folgendem Problem beschäftigt, wo ich mir nun hier neue Lösungsansätze erhoffe:

Es arbeiten verschiedene Leute mit einem excel sheet (ca 800-900 Zeilen). Diese Tabelle lebt, also es werden Zeilen in der Mitte zugefügt, Werte hin und her kopiert. Ich benötige jedoch für jede Zeile einen eindeutigen Index, welchen ich für andere Dinge benötige. Anhand dieses Indexes (sagen wir mal einen zufälligen, eindeutigen Code) greife ich auf diese Zeile zu, um die Daten abzugreifen. Diese Spalte mit dem Index habe ich ausgeblendet.
Das funktioniert auch soweit gut, leider ist es aber so, dass die anderen Bearbeiter ganze Zeilen kopieren und einfügen, sodass der Index auch kopiert ist. Ich hatte mich damit beholfen, bei Selection.change jeweils mit ".Rows.Count, 4).End(xlUp).Row" die letzte Zeile auf Änderung zu prüfen um dann mit einem Makro Duplikate zu prüfen. Dann soll die neu erstellte Zeile(n) einen neuen Code erhalten. Dann habe ich eine zusätzliche, verdeckte Spalte, wo ich eine fortlaufende Nummerierung generiere um zu erkennen, welches das Duplikat ist (wo die Nummierung nicht mehr passt). Das ist alles sehr umständlich - das soll nicht das Problem sein, jedoch sind es immer Schleifen, die abgearbeitet werden, das kostet Zeit auch wenn es nicht gravierend auffällt.
Jedoch funktioniert das auch nur in 90% der Fälle, sodass ich nach anderen Wegen suche. Ich bin mir sicher, dass ich viel zu kompliziert denke und es schnellere Funktionen dafür gibt.

Danke schon mal für eure Ideen,

Grüße, Holger

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neuen Wert in Spalte nach Duplizierung löschen
05.03.2024 10:35:49
Holger76
irgendwie komme ich mit dem neuen Forum nicht klar. Kann man gar keinen Beitrag mehr bearbeiten ? Sich einloggen und eigene Beiträge sehen usw ? Aber das soll hier nicht das Thema sein. Dann ergänze ich halt als Antwort:
Die Tabelle ist eine Art Datenbank, allerdings auch mit Leerzeilen, also Daten werden gruppiert dargestellt in Listenform. Die Datei ist nicht freigegeben, es arbeitet jeweils nur einer mit Schreibrechten. Ich öffne diese Datei im Lesemodus aus einer anderen Excel Datei heraus und suche nach dem Code und ziehe dann die Daten.

Wenn ich in der Überschrift schreibe, neuen Wert nach Duplizierung Löschen meine ich eigentlich direkt einen neuen Code erzeugen. Dafür habe ich aber ein Script was ich dann für diese Zeile laufen lasse. Die Funktion RemoveDuplicates habe ich mir angeschaut, ist aber denke ich nicht nutzbar für mich, weil ich nicht die ganze Zeile gelöscht haben will und ich auch geziehlt nur den Wert der neu hinzugefügten Zeile gelöscht haben will (wenn doppelt). Außerdem sollen natürlich doppelte Leerzeilen unbeachtet sein.
Anzeige
AW: Neuen Wert in Spalte nach Duplizierung löschen
05.03.2024 19:04:10
Piet
Hallo Holger

ohne den Code zu sehen, oder eine Beispieldatei, wird wohl kein Kollegen an den Thread herangehen.
Es reicht eine anonyme Beispieldatei mit 10-20 Zeilen und deiner Lösung von Hand, um dein Anliegen zu verstehen.

mfg Piet
AW: Neuen Wert in Spalte nach Duplizierung löschen
06.03.2024 08:48:45
Holger76
Ok. Ich habe mal den relevanten Teil herauskopiert, damit man sieht, wie es aktuell läuft. Das ganze ist noch in der Testphase und wurde noch nicht final eingefügt.
Was auf jeden Fall Probleme macht, ist die Tatsache, wenn Leerzeilen eingefügt werden und dann Daten einkopiert werden, ohne dass Zeilen nach unten rutschen - gibt ja verschiedene Möglichkeiten zum einfügen.



Private Sub Worksheet_SelectionChange(ByVal Target As Range)

lngaktZeile = Tabelle1.Cells(Tabelle1.Rows.Count, 4).End(xlUp).Row
'lngletzteZeile wird bei Start festgelegt (public variable)
'bstart = public. sollte Mehrfachausführung verhindern, zu Testzwecken in ws_change. Ob aktuell notwendig, weiß ich nicht

If (lngaktZeile > lngletzteZeile Or Selection.Columns.Count > 1) And bStart = False Then
Application.Calculation = xlManual
bStart = True
KopierteZellen
lngletzteZeile = lngaktZeile
Application.Calculation = xlAutomatic
bStart = False
End If
End Sub


Public Sub KopierteZellen()
Dim i, ii, iNeu As Variant

With Tabelle1
For i = 10 To lngaktZeile
If .Cells(i, 26).Value > i Then ID_Code (i) 'IDCode kommt in Spalte 27
iNeu = i + 1
For ii = iNeu To lngaktZeile
If .Cells(ii, 26).Value = .Cells(ii - 1, 26).Value + 1 Then ID_Code (ii) Else GoTo neuelfdNr
Next ii
End If
Next i
GoTo Ende
neuelfdNr:
.Range("Z10").Value = 10
.Range("Z10:Z10").AutoFill Destination:=.Range("Z10:Z" & lngaktZeile), Type:=xlLinearTrend '->Spalte 26
End With
Ende:
End Sub

Anzeige
AW: Neuen Wert in Spalte nach Duplizierung löschen
07.03.2024 20:02:43
Piet
Hallo Holger

Sorry, ich helfe gerne, aber bei dem Code sehe ich keine Möglichkeit dir weiterzuhelfen.
Meine Programmierkenntnisse stammen aus der Zeit Excel 95/97, aus den Anfängen 1990.
Für einfache Anwendungen reicht das, aber bei komplexen Codes muss ich leider passen.

mfg Piet
AW: Neuen Wert in Spalte nach Duplizierung löschen
06.03.2024 10:30:04
Holger76
Ich möchte den Hintergrund noch etwas verständlicher machen. Diese Liste ist eine Auftragsplanung, hier mal ein paar Beispielzeilen:

ArtNr		Anzahl		Zieldatum	

12345678 6 06.03.2024
33334444 8 06.03.2024
55553333 2 07.03.2024
____________________________________________
16

33334444 4 09.03.2024
12345678 10 10.03.2024
____________________________________________
14



Dies ist natürlich stark vereinfacht dargestellt, es sind viel mehr Spalten.
Es gibt eine 2. Excel Datei, welche sich selektiv bestimmte Aufträge daraus zieht und nach Fertigstellung eine log-Datei erstellt mit dem Code zur Identifizierung und ggf. aktualisierter Anzahl. Diese log-Datei wird wiederum von der ersten Datei, also diese um die es hier geht ausgewertet, zugeordnet und sozusagen fertig gemeldet, die Anzahl wird korrigiert. Das Zieldatum wird jedoch hin und wieder angepasst, sodass ich das auch nicht zur Identifizierung nehmen kann. Deshalb bleibt mir nur der Code (so meine Gedanken). Diesen habe ich jetzt hier nicht dargestellt, das wäre eine extra Spalte
Anzeige
AW: Neuen Wert in Spalte nach Duplizierung löschen
06.03.2024 16:49:57
Piet
Hallo Holger

ehrlich gesagt übersteigt deine Aufgabe mein bescheidenes Excel Wissen, das ist mir zu komplex.

Ich habe aber einen Fehler gesehen, und wundere mich das es keinen Laufzeitfehler gibt??
If .Cells(i, 26).Value > i Then ID_Code (i) -- dahinter kommen Befehle mit End If am Ende!

Bei dieser Schreibweise, alles in einer Zeile, geht Excel davon aus das diese IF Anweisung zu Ende ist!
End if müsste angemeckert werden, weil es davor kein gültiges IF Then gibt. Ändere es bitte so um.
Dann musst du aber noch definieren was es mit ID_Code (i) auf sich hat?? Das habe ich nicht verstanden.
If .Cells(i, 26).Value > i Then
ID_Code (i) = ????

mfg Piet
Anzeige
AW: Neuen Wert in Spalte nach Duplizierung löschen
07.03.2024 10:35:14
Holger76
Hallo,
ja da hast du nicht unrecht. Ich habe den Code nur notdürftig im editor zurechtgetrimmt, um auf das Wesentliche zu reduzieren (ohne den code laufen zu lassen) Also bitte nicht auf solche Feinheiten achten, genau wie die diversen Variablen, weilweise als Variant. Das kann man alles besser machen und ist meist testweise aus anderen Scripts aus meinem Projekt herauskopiert, wo das Sinn machte. Aber wie gesagt, ich bin auf der Suche nach einem anderen Ansatz, wo ich nicht davon ausging, dass der aktuelle Code jetzt so relevant ist.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige