Frage von sv3n19901, 46

Hallo zusammen, ich suche eine Formel zum übertragen von Daten?

also... Ich habe hier eine Datei mit 20.000 Kunden, diese Kunden sind 200 verschieden Märkten zuzordnen. Ich soll halt für jeden Markt eine eigenes Tabellenblatt anlegen. Damit ich jetzt keine 10 stunden dran sitze Suche ich eine Formel die folgendes kann.

Suche in Tabellenblatt 1 Spalte A nach Feld 1A aus derzeitigen Tabelle (da wird die Marktnummer stehen) und übertrage alle Daten in von Tabellenblatt 1 in derzeitiges Tabellenblatt.

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 27

Ohne VBA würde ich einen Filter auf die Haupttabelle legen und diese duplizieren. Ganz kommt man so um die Arbeit nicht herum, denn man muss zweihundert Mal den Filter pro Markt anwenden.

Mit VBA wäre es einfacher. Dabei gelte es zu beachten, dass der Aufwand, bis das Programm funktioniert zwar geringer als die manuelle Variante ist, aber lange nicht 0. Zum Anderen ist das Programm wahrscheinlich für die Zukunft unbrauchbar, wenn es einmal erfolgreich durchgelaufen ist.

Expertenantwort
von Ninombre, Community-Experte für Excel, 19

Den Hinweis von Suboptimierer kann ich nur unterstreichen, wobei das Anlegen der Tabellenblätter nach einer einmaligen Sache klingt. Wenn auch die Kunden dauerhaft aus dem zentralen Datenblatt auf die einzelnen Tabellenblätter verteilt werden sollen, würde ich ein anderes Verfahren überlegen. Folgendes für eine Einmal-Aktion:

Wenn Du eine Liste erzeugst für alle Märkte (unter Daten -> Duplikate entfernen), kannst Du per Makro die Tabellenblätter anlegen.

Meine Annahme: Es gibt ein Tabellenblatt1 auf dem von A1 bis A200 die um Duplikate bereinigte Liste der Märkte steht. das i=1 to 200 ggf. anpassen, wenn es mehr oder weniger als 200 sind.

Sub marktblattanlegen()
'i=1 - 200 => Zeile 1 bis 200, ggf. anpassen
For i = 1 To 200
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = Tabelle1.Cells(i, 1).Value 'die 1 steht für Spalte A
Next
End Sub

Danach kann man die Kundeneinträge übernehmen:

Sub eintraege_kopieren()
Dim i, j, k As Long
For i = 2 To Sheets.Count 'wenn die Kunden in Zeile 2 beginnen
k = 1 'wenn in der ersten Zeile begonnen werden soll, die Einträge einzufügen
For j = 2 To 20000 'Namen ab Zeile 2 bis 20000, ggf. anpassen
If Tabelle1.Cells(j, 1).Value = Sheets(i).Name Then
Sheets(i).Cells(k, 1).Value = Tabelle1.Cells(j, 2).Value
k = k + 1
End If
Next j
Next i
End Sub

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten