Registriert seit: 03.01.2024
Version(en): 365
Halo zusammen.
Ich habe ein Problem mit einer Regelerstellung
Hier der Sachverhalt.....
Es gibt die Hauptshop csv, die in einen Onlineshop hochgeladen werden soll....dort stehen 7000 Artikel untereinander. in Spalte B gibt es eine klare Produkt ID zum Beispeil ATI- 6257
In der 2ten CSV steht in Spalte A wieder diese Produkt ID, in Spalte B der Pfad zu dem jeweiligen Produktbild.
Zu den 7000 Produkten gibt es etwa 4000 Bilder, nicht jedes Produkt hat ein Bild.
Wie stelle ich das jetzt so ein, dass Excel Zeile für Zeile prüft, ob es ein passendes Bild gibt ( ID müssenabgeglichen werden)
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo am einfachsten mit einem Find Suchlauf zwischen den beiden Dateien. Dazu das Makro anpassen. Bei "Mappe2" den Namen der zweiten csv Datei angeben, und für beide Mappen die richtigen Tabellen Namen. Ich nehme an die ID Nummer steht in Spalte A, sonst muss im Suchlauf die Column angepasst werden. Das Makro in ein normales Modul kopieren und mit normalem Command Button starten. mfg Gast 123 Code: Sub IDNummern_vergleichen() Dim AC As Range, rFind As Range, lz1, lz2 Dim Sht2 As Worksheet 'Sheet in Datei 2 Set Sht2 = Workbooks("Mappe2").Sheets("Tabelle1") With ThisWorkbook.Sheets("Tabelle1") 'LastZell in Spalte A suchen lz1 = .Cells(Rows.Count, 1).End(xlUp).Row For Each AC In .Range("A1:A" & lz1) Set rFind = Sht2.Columns(1).Find(What:=AC, After:=[a1], LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) If Not rFind Is Nothing Then 'in beliebige Spalte "Find" Text notieren .Cells(AC.Row, "xx") = "Find" End If Next AC End With End Sub
Registriert seit: 03.01.2024
Version(en): 365
Zum besseren Verständnis: CSV 1 A B C D E Lampe für Aquarium ATI-281254 ATI Lampe weiß 80W 8kg 19% Lampe für Aquarium ATI-281255 ATI Lampe weiß 54 W 7kg 19% Csv2 A B ATI -28254 http://server/Korallenstube/235686-jpgATI -28255 http://server/Korallenstube/235692-jpg Da ich 7000 Artikel habe, möchte ich gerne wissen, wie ich die csv1 verändern kann, dass sich die Pfade hinter die jeweiligen Artikel der csv 1 setzen
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
04.01.2024, 00:28
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2024, 00:34 von Gast 123.)
Pardon, kleine Fehler Korrektur Code: Sub IDNummern_vergleichen() Dim AC As Range, rFind As Range, lz1, lz2 Dim Sht2 As Worksheet 'Sheet in Datei 2 Set Sht2 = Workbooks("Mappe2").Sheets("Tabelle1") With ThisWorkbook.Sheets("Tabelle1") 'LastZell in Spalte A suchen, Spalte B löschen lz1 = .Cells(Rows.Count, 1).End(xlUp).Row .Range("B2:B" & lz1).ClearContents For Each AC In .Range("A1:A" & lz1) Set rFind = Sht2.Columns(1).Find(What:=AC, After:=[a1], LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) If Not rFind Is Nothing Then 'in Spalte B Bildpfad notieren If rFind.Offset(0, 1) <> "" Then _ AC.Offset(0, 1) = rFind.Offset(0, 1) End If Next AC End With End Sub
Nachtrag soll nur Spalte B automatisch eingefügt werden, oder die ganze Zeile von B bis E?? In dem Fall bitte diesen Code testen. Das Makro muss in die Mappe, die die gesuchten Daten übernimmt. mfg Gast 123 Code: Sub IDNummern_vergleichen() Dim AC As Range, rFind As Range, lz1, lz2 Dim Sht2 As Worksheet 'Sheet in Datei 2 Set Sht2 = Workbooks("Mappe2").Sheets("Tabelle1") With ThisWorkbook.Sheets("Tabelle1") 'LastZell in Spalte A suchen, Spalte B löschen lz1 = .Cells(Rows.Count, 1).End(xlUp).Row .Range("B2:B" & lz1).ClearContents Application.ScreenUpdating = False For Each AC In .Range("A1:A" & lz1) Set rFind = Sht2.Columns(1).Find(What:=AC, After:=[a1], LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) If Not rFind Is Nothing Then 'in Spalte B-E kopieren If rFind.Offset(0, 1) <> "" Then rFind.Offset(0, 1).Resize(1, 4).Copy AC.Offset(0, 1).PasteSpecial xlPasteValues Application.CutCopyMode = False End If End If Next AC End With End Sub
Registriert seit: 03.01.2024
Version(en): 365
Es soll nur die Spalte B der csv 2 (also der Bildpfad )in die Zeile hinter den gleichen Artikel (gleiche Artnr.) der csv1
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo
das 1. Makro in der Antwort #4 sollte dafür ausreichen. Bitte einfach mal testen.
mfg Gast 123
Registriert seit: 29.09.2015
Version(en): 2030,5
04.01.2024, 16:10
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2024, 16:19 von snb.)
Zum besseren Verständnis: lade mal beide CSV-Dateien hoch Code: Sub M_snb() With CreateObject("scripting.filesystemobject") c00 = .opentextfile("G:\OF\datei1.csv").readall sn = Split(c00, vbCrLf) sp = Split(.opentextfile("G:\OF\datei2.csv").readall, vbCrLf) For j = 0 To UBound(sp) - 1 st = Split(sp(j), ";") c01 = Filter(sn, st(0))(0) c00 = Replace(c00, c01, c01 & ";" & st(1)) Next .createtextfile("G:\OF\datei1.csv").write c00 End With End Sub
|