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

VBA Verteilung auf Reiter

VBA Verteilung auf Reiter
23.04.2019 07:58:53
Addi
Hallo Zusammen,
ich habe folgendes Problem...ich muss eine umfangreiche Excel-Liste anhand von einem Kriterium auf unterschiedliche Reiter verteilen/kopieren.
In Spalte A steht die Kundennummer mit weiteren Daten/Informationen in den Spalten B bis X. Nun kann es vorkommen das für den Kunden "1" beispielsweise 25 Zeilen existieren...für den Kunden "2" nur 15...und für Kunde "47" dann vllt. 55...usw.
Ich würde per VBA gerne für jeden Kunden ein neues Register erzeugen - als Benennung die Kundennummer - um dann alle Zeilen die zu diesem Kunden gehören dort reinzukopieren.
Ich hoffe Ihr versteht mein Problem - noch mehr hoffe ich das es dazu eine Lösung gibt...
Vielen Dank schon mal vorab.
Viele Grüße, Addi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot
23.04.2019 08:20:47
Fennek
Hallo,
bevor du es mit VBA versuchst, teste ob es mit einer Pivot geht: Kunden in den Filter und dann bei den Optionen "in Sheets verteilen" auswählen.
mfg
AW: Pivot
23.04.2019 09:12:39
Addi
Hallo Fennek,
nee leider keine Option - die Datei soll eine Schnittstelle füttern und lässt daher diese Alternative nicht zu...
Dennoch vielen Dank!
Gruß Addi
zB.200 Kunden=200 Blätter? wozu ?
23.04.2019 08:30:25
robert
Hi,
alle Daten in einem Blatt ist doch besser für div.Auswertungen-
die Du sicher irgendwie machen willst.
Gruß
robet
AW: zB.200 Kunden=200 Blätter? wozu ?
23.04.2019 09:06:57
Addi
Hallo Robert,
das ist korrekt - aber für die automatisierte Weiterverarbeitung über Schnittstelle ist dies so zwingend notwendig...leider gibt es keine Möglichkeit die Schnittstelle anzupassen, also muss der Input dementsprechend aussehen...
Viele Grüße
Addi
Anzeige
AW: zB.200 Kunden=200 Blätter? wozu ?
23.04.2019 09:23:00
Nepumuk
Hallo Addi,
eine etwas konkretere Beschreibung deiner Tabelle wäre hilfreich. Z.B. in welcher Zeile beginnen die Daten, soll die Überschrift, so vorhanden, mit kopiert werden, sind Formeln in der Tabelle und wenn ja sollen diese kopiert werden oder nur deren Werte?
Am einfachsten, du lädst eine Mustermappe hoch.
Gruß
Nepumuk
AW: zB.200 Kunden=200 Blätter? wozu ?
23.04.2019 10:21:48
Addi
Hallo Nepumuk,
eine Mustertabelle kann ich hier von meinem Arbeitsplatz leider nicht hochladen...
Es ist eine ganz einfache Tabelle...
* relevanten Spalten sind A bis X
* in A steht immer das Kriterium (Kundennummer) - welches später auch als Reitername verwendet
werden soll
* Die Zeilenanzahl kann variabel sein
* Die "Mitnahme" der Überschrift in jeden Reiter wäre super - steht aussschließlich in Zeile 1
* Die Tabelle enthält keine Formeln!!
Ich hoffe damit kannst Du was anfangen, bzw. dies beschreibt mein Problem ausführlicher?
Viele Grüße
Addi
Anzeige
AW: zB.200 Kunden=200 Blätter? wozu ?
23.04.2019 11:41:24
Nepumuk
Hallo Addi,
teste mal:
Option Explicit

Public Sub CreateSheets()
    Dim avntValues As Variant, vntItem As Variant
    Dim objDictionary As Object
    Dim objWorksheet As Worksheet
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    With ThisWorkbook.Worksheets("Tabelle1") 'Tabellenname anpassen !!!
        If .FilterMode Then Call .ShowAllData
        avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
        Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
        For Each vntItem In avntValues
            If Not IsEmpty(vntItem) Then objDictionary.Item(Key:=vntItem) = vbNullString
        Next
        avntValues = objDictionary.Keys
        Set objDictionary = Nothing
        For Each vntItem In avntValues
            Set objWorksheet = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(1))
            objWorksheet.Name = vntItem
            Call .Rows(1).AutoFilter(Field:=1, Criteria1:=vntItem)
            With .AutoFilter.Range
                Call Range(.Cells(1, 1), .Cells(.Rows.Count, 26)).Copy( _
                    Destination:=objWorksheet.Cells(1, 1))
            End With
            Set objWorksheet = Nothing
        Next
        Call .ShowAllData
    End With
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: zB.200 Kunden=200 Blätter? wozu ?
23.04.2019 13:58:53
Addi
Hallo Nepumuk,
absolut genial, das erspart mit sehr viel Zeit...muss jetzt nur noch bisschen finetuning machen...in meiner Beschreibung habe ich von Kundennummern gesprochen die als Separationskriterium und Registerbeschriftungen dienen sollen (einfachheitshalber) in der Tat sind das aber die Kundennamen, die teilweise mehr als 31 Zeichen haben, die werde ich jetzt entsprechend kürzen und in Spalte A hinterlegen...anschließend werde ich dann in allen Registerblätter die Spalte A markieren und löschen, dann sollte das Ergebnis perfekt sein!!
Vielen Dank für Deine Hilfe
VG Addi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige