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

Nach Key und ersetzen

Nach Key und ersetzen
09.08.2019 08:36:13
tara
Hallo liebes Forum,
ich habe zwei Tabellen die folgendermaßen aufgebaut sind
bestellnr Badge Preis Text Material Datum
123456 10 12 hs 38476 12.2019
23456 20 16 ajs 93874 08.2019
34456 80 18 wjeh 8746 03.2019
45789 50 22 jehj 39874 07.2019
45722 70 18 djhd 9827 04.2019
Tabelle 2 ist genauso aufgebaut
Nun sollen die Daten aus Tabellenblatt2 mit den Daten aus Tabellenblatt1 verglichen werden. Explizit die Spalte Bestellnummer, Badge und Material.
Das Material kann nämlich öfter vorkommen, aber da ist die Bestellnummer und die Badge anders. Deswegen sollte am besten ein Key erstellt werden.
Wenn die Materialnummer aus Tabellenblatt2 in Tabellenblatt1 gefunden wird und der Key aus Bestellnummer und Badge übereinstimmen, sollen die Daten aus Tabellenblatt1 mit den Daten aus Tabellenblatt2 überschrieben werden und das Datum der Aktualisierung in Spalte 1 Tabellenblatt1 eingetragen werden.
Wird das Material nicht gefunden soll die ganze Zeile in Tabellenblatt 1 eingefügt werden. Auch wenn das Material gefunden wird und der Key jedoch nicht gefunden wird, soll die Zeile komplett kopiert und in Tabellenblatt 1 eingetragen werden.
ich habe folgendes schon geschrieben, weil ich die gleiche Prozedur ähnlich vorher schon mal hatte, das mit dem Key ist allerdings neu und ich weiß nicht, wie ich das am besten lösen kann
ich wäre über jede Hilfe dankbar!
Sub suchend ersetzen()
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim C As Range
Dim D As Range
Set Ws1 = Worksheets("Tabelle1")
Set Ws2 = Worksheets("Tabelle2")
For Each C In Ws2.Range("C2:C100000").SpecialCells(xlCellTypeConstants)
Set D = Ws1.Columns(3).Find(C, lookat:=xlWhole, LookIn:=xlValues)
If Not D Is Nothing Then
C.EntireRow.Copy D.Offset(0, -2)
D.Offset(0, -2) = Date
Else
Set D = Ws1.Cells(Ws1.Rows.Count, 2).End(xlUp).Offset(1, -1)
C.EntireRow.Copy D
D = Date
End If
Set D = Nothing
Next C
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Key und ersetzen
09.08.2019 09:43:43
tara
Niemand :( ?
AW: Nach Key und ersetzen
09.08.2019 10:22:22
peterk
Hallo Tara
Du könntest dir in einer Hilfsspalte den Key erzeugen mit der Formel "=A1&A2&A5" und dann Deine Prozedur über diese Hilfsspalte laufen lassen (Hilfsspalte in beide Tabellenblätter!)
AW: Nach Key und ersetzen
09.08.2019 11:23:22
Tara
Genau, super. Das dann a besten in einer Schleife, weil der Datensatz ist sehr groß
Könntest Du mir sagen wie ich das aufbauen kann?
Anzeige
AW: Nach Key und ersetzen
09.08.2019 11:26:41
peterk
Hallo
Willst Du die Formel per Makro einfügen? Am Besten Du schickst mir ein Beispiel mit eingen Datensätzen.
AW: Nach Key und ersetzen
09.08.2019 12:54:48
Zna
ja genau, ich habe eine kleine beispieldatei hier als link hocgeladen
Vielen Dank:)
AW: Nach Key und ersetzen
09.08.2019 13:11:54
peterk
Hallo
Dhast den Link nicht eingefügt ;-)
AW: Nach Key und ersetzen
09.08.2019 13:46:34
Zna
oh sorry,...
hier der Link https://www.herber.de/bbs/user/131355.xlsx
also aus spalte a,b un j der Key, die Spalte sollte am besten ganz am Ende eingefügt werden, egal wieviele Spalten es gibt.
Dankeschön:)
AW: Nach Key und ersetzen
09.08.2019 14:11:57
peterk
Hallo
Procedure um den "key" zu generieren
Sub CreateKey()
  Dim ws1 As Worksheet
  Dim ws2 As Worksheet
  Dim lz1 As Long
  Dim lz2 As Long
  Dim ls1 As Long
  Dim ls2 As Long
  
  Set ws1 = ThisWorkbook.Worksheets("Tabelle1")
  Set ws2 = ThisWorkbook.Worksheets("Tabelle2")

  lz1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row ' letzte Zeile in Tabelle1 
  lz2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row ' letzte Zeile in Tabelle2 
  
  ls1 = ws1.Cells(1, Columns.Count).End(xlToLeft).Column ' letzte Spalte in Tabelle1 
  ls2 = ws2.Cells(1, Columns.Count).End(xlToLeft).Column ' letzte Spalte in Tabelle2 
  
  ws1.Cells(1, ls1 + 1).Value = "Key"
  ws2.Cells(1, ls2 + 1).Value = "Key"
  
  ws1.Cells(2, ls1 + 1).Formula = "=A2&B2&J2"
  ws1.Cells(2, ls1 + 1).AutoFill Destination:=ws1.Range(ws1.Cells(2, ls1 + 1), ws1.Cells(lz1, ls1 + 1)), Type:=xlFillDefault
  
  ws2.Cells(2, ls2 + 1).Formula = "=A2&B2&J2"
  ws2.Cells(2, ls2 + 1).AutoFill Destination:=ws2.Range(ws2.Cells(2, ls2 + 1), ws2.Cells(lz2, ls2 + 1)), Type:=xlFillDefault
  
End Sub

Anzeige
AW: Nach Key und ersetzen
09.08.2019 14:53:57
Zna
Super funktioniert wie am Schnürrchen, liebsten Dank
Jetzt habe ich versucht einfach den Code von oben umzuschreiben, aber das funktioniert nicht.
Ich will nun nach dem Key von Tabelle 2 in Tabelle 1 suchen, wenn er gefunden wird, soll die Zeile komplett ersetzt werden, wenn nicht, dann soll sie hinzugefügt werden.
Das sollte der Code von oben ja nun machen, funktioniert in der anderen Datei auch
AW: Nach Key und ersetzen
09.08.2019 15:35:19
Zna
Ah ich weiß woran es liegt und zwar an dem Zellenwert, nun steht ja dort A2&B2&J2
ich muss das ja umwandeln
Cells(1, 2) = Val(Cells(3, 4))
so in etwa für einen eintrag
wie kann ich das denn am besten in eine schleife packen?
damit das für beide tabellenblätter gemacht wird
Anzeige
AW: Nach Key und ersetzen
09.08.2019 15:51:34
Zna
Sub FormelnInWerte()
Tabelle1.Range("S2:S100000").Value = Tabelle1.Range("S2:S1000000").Value
End Sub
hab es schon :)
danke für eure Hilfe :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige