696 Aufrufe
Gefragt in Tabellenkalkulation von peters Mitglied (460 Punkte)
Hallo zusammen,

ich habe für meine eigene Videothek eine einfache Excel-Tabelle mit über 17.000 Zeilen.
Diese nutze ich als Back-End, als Front-End kommt MS-Access zum Einsatz.

Das birgt zwar einige Nachteile, aber auch den Vorteil, dass ich das proprietäre Access-Format umgehe, was für mich ein KO-Kriterium ist.

Worum es eigentlich geht ist folgendes:

Ich habe auch etliche Serien katalogisiert, deren Einträge jeweils im Grundaufbau so aussehen:
-  "Serie A - 01 - Titel der Folge"
-  "Serie A - 02 - Titel der Folge"
-  "Serie A - 03 - Titel der Folge"
-  ...

Ich möchte mir nun einen Überblick verschaffen, welche Serien ich katalogisiert habe und aus wieviele Folgen die jeweilige Serie besteht.

Wie bekomme ich eine solche Zusammenfassung in Excel (auf einem gesonderten Tabellenblatt) hin?

Hat da jemand eine Idee?

Grüße

Peter

10 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Peter,

stehen die Angaben jeweils in einer Zelle und es steht jeweils der Begriff "Serie" am Anfang? Dann benutze den Autofilter -> Textfilter -> Beginnt mit -> Serie. Dann kannst du die sichtbaren Zellen kopieren und ins andere Tabellenblatt einfügen.

Bis später, Karin
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Karin,

nein, das waren nur Beispieltexte anstatt des Serientitels.

Es ist allerdings jeder Eintrag in einer separaten Spalte als Serie markiert und die finale Folge in wiederum einem anderen Feld nochmal markiert.

Der Autofilter löst mein Problem nicht.

Ich stelle mir in einem separten Tabellenblatt eine Liste vor, in der sinngemäß in Zeilen steht:

A1: "Serienname A"       B1: "64 Folgen"
A2: "Serienname B"       B2: "23 Folgen"
A3: "Serienname C"       B3: "54 Folgen"
......

Das Ganze soll sich natürlich automatisch aktualisieren, wenn Änderungen im Datenbestand erfolgen.

Ich vermute mal fast, dass sich das lediglich mittels VBA lösen lassen wird, aber mir fehlt der Ansatz dafür.

Grüße

Peter
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Peter,

das lässt sich sicher mittels VBA lösen, aber: könntest du eine Beispielmappe mit einigen Datensätzen hochladen, damit man den genauen Tabellenaufbau sehen kann?

Die Aktualisierung müsstest du dann schon von Hand auslösen - automatisch würde ich das nicht machen lassen, denn 17.000 Datensätze sind nicht wenig und den Code bei jeder (minimalen) Änderung auszuführen würde die Preformance der Arbeitsmappe doch um ein ganzes Stück beeinträchtigen.

Bis später, Karin
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)

Hallo Karin,

ich probiere mal, ob ich das mit der Datei hinbekomme bzw. mit dem Hochladen.

https://supportnet.de/forum/?qa=blob&qa_blobid=394172161049999653

Die Dateistruktur ist wie in der Datei. In der Originaldatei habe ich in weiteren Tabellen diverse andere Auswertungen, aber die sind hier nicht relevant.
In der Spalte "Bemerkungen" ist jede Serie (zusätzlich zum Feld "Serie") nochmals als solche definiert, indem dort im letzten Datensatz der Serie entwerder "SEZE" eingetragen ist (sagt aus, dass das die letzte vorliegende Folge ist, die Serie aber noch unvollständig) oder "SEZEF" zum Zeichen, dass die Serie komplett ist.

Ich bearbeite diese Datei für gewöhnlich mit Calc (Libre Office), aber für die jetzt gesuchte Funktion steht auch Excel zur Verfügung.

Wie gesagt, die eigentliche Pflege der Daten erfolgt grundsätzlich mittels einer Access-Datenbank, in welcher dann auch diverse Abfragen (nach Schauspielern, Genre, usw.) und Berichte erstellt werden.

Allerdings habe ich von Access noch weniger Plan, so dass ich die jetzt gesuchte Abfrage dort nicht gestemmt bekomme.

Grüße

Peter

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Peter,

das Beispiel ist nicht sehr glücklich gewählt, denn wenn ich das richtig sehe, ist das nur EINE Serie - wichtig ist, dass Daten zu mindestens ZWEI (oder mehr) Serien in der Mappe vorhanden sind.

Sind die Daten so sortiert, dass die Angaben zur selben Serie fortlaufend untereinader aufgelistet sind?

Bis später, Karin
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Karin,

um das unglückliche Beispiel zu ändern, brauchst Du ja nur "Tatort" durch einen x-beliebigen anderen Text zu ersetzen.

Eingetragen werden die Datensätze unsortiert, allerdings sortieren ich die Datei regelmäßig nach Titel aufsteigend.

Grüße

Peter
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Peter,

na wenn ich jetzt alle Tatort umbenenne bringt das doch nichts. Das Beispiel sollte schon so eingestellt werden, dass es dem Orignial nahekommt und nicht vom Helfer aus Unkenntnis der datsächlichen Bedingungen zu irgendetwas umgewandelt werden, das dann vielleicht dem Original widerspricht - damit wäre möglicherweise die gesamte Arbeit umsonst gewesen...

Bis später, Karin
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)

Hallo Karin,

da hast Du auch wieder recht.

Hier nochmal eine Datei mit mehr Datensätzen.

https://supportnet.de/forum/?qa=blob&qa_blobid=2771571356972958426

Grüße

Peter

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Peter,

es ist sehr kontraproduktiv, dass

1. es keine extra Spalte gibt, in welcher der Serienname steht ohne jegliche Zusätze - Excel weiß ja nicht, wo in Spalte A der Name der Serie endet und weitere Zusätze beginnen. Aus diesem Grund kann der Code nur den Inhalt der ersten Zelle einer Serie einschließlich der zusätzlichen Daten ausgeben - das musst du dann von Hand anpassen

2. nur das Ende einer Serie in Spalte M und nicht auch der Anfang gekennzeichnet ist.

Beides erschwert das ganze ungemein.

Aus deiner Mappe geht nicht hervor, in welcher Tabelle das Ergebnis ausgegeben werden soll - ich habe deshalb willkürlich "Tabelle2" im Code festgelegt - musst du anpassen.

Bedingung ist, dass die Daten nach Spalte A sortiert vorliegen.

Sub Zusammenfassen()
    Dim lngZeile As Long
    Dim intZaehler As Integer
    Dim lngAnzahl As Long
    Dim strVergleich As String
    Dim arrDaten()
    Dim lngDaten As Long
    For lngZeile = 2 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
        If Cells(lngZeile, 1) = "" Then Exit For
        strVergleich = Mid(Cells(lngZeile, 1), 1, Application.Round(Len(Cells(lngZeile, 1)) / 2, 0))
        For intZaehler = 1 To Len(strVergleich)
            If Asc(Mid(strVergleich, intZaehler, 1)) > 47 And Asc(Mid(strVergleich, intZaehler, 1)) < 58 Then
                strVergleich = Left(Cells(lngZeile, 1), intZaehler - 1)
                Exit For
            End If
        Next intZaehler
        lngAnzahl = 1
        ReDim Preserve arrDaten(0 To 1, 0 To lngDaten)
        arrDaten(0, lngDaten) = Cells(lngZeile, 1)
        Do
            If Cells(lngZeile + 1, 1) Like strVergleich & "*" Then
                lngAnzahl = lngAnzahl + 1
            Else
                Exit Do
            End If
            lngZeile = lngZeile + 1
        Loop While InStr(Cells(lngZeile, 13), "SEZE") = 0 Or Cells(lngZeile, 1) = ""
        If lngAnzahl > 1 Then arrDaten(1, lngDaten) = lngAnzahl
        lngDaten = lngDaten + 1
        lngAnzahl = 0
    Next lngZeile
    With Worksheets("Tabelle2")
        .Cells.ClearContents
        .Range("A1").Resize(lngDaten, 2) = Application.Transpose(arrDaten())
    End With
End Sub

Übrigens konnte ich deine Mappe nur im schreibgeschützten Zusand öffnen und musste deshalb die Daten in eine andere Arbeitsmappe kopieren.

Bis später, Karin

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Karin,

vielen Dank!
Ich bin Deinem Ratschlag gefolgt und habe eine zusätzliche Spalte eingebaut, in der der bei jedem Datensatz Serientitel erfasst wird.

LG
Peter
...