Mehrere Excel Dateien nach bestimmten Ereignissen

Hallo,

ich stehe vor folgendem Problem:
Ich habe sehr viele Excel Dateien, die genau eines gemeinsam haben.
In allen Dateien sind mehrere Rahmen, alle gleich formatiert, aber an
unterschiedlichen Stellen im Dokument. In den Rahmen stehen Inhalte, die ich gerne gezählt hätte. Also jeder Rahmen beinhaltet 18 Zellen, die entweder leer sind oder nicht, wenn nicht, hätte ich gerne nicht den Inhalt durchsucht sondern die Anzahl der nichtleeren Zellen aufsummiert.
Geht sowas und wenn ja, wie?
Vielen Dank im Voraus

Wolfgang

Hallo Wolfgang
Da bräuchte ich noch ein paar Hinweise:

Ich habe sehr viele Excel Dateien, …

Dateien= Mappen oder wohl eher Tabellenblätter in einer Mappe?
Sehr viele. Wie viele ca.?

In den Rahmen stehen
Inhalte, die ich gerne gezählt hätte. Also jeder Rahmen
beinhaltet 18 Zellen,

Resultat der Zählung ist 18!
Oder willst du etwa die Werte addieren, falls alle Zellen Inhalt haben? Dann sag das!
Wenn du das Ganze etwas präziser beschreibst, bekommst du eher brauchbare Reaktionen.
Bis dann
Erich

Hallo Wolfgang,

hast Du die Funktion ANZAHLLEEREZELLEN mal probiert? Weiss leider nicht seit welcher Version es die schon gibt, in Excel 2003 ist sie auf jedenfalls vorhanden.
Mein Vorschlag:
Markiere den gesamten Bereich der durchgesucht werden soll, gib diesen Bereich einen Namen Einfügen > Namen > Definieren

Dann die Funktion
=ANZAHLLEEREZELLEN(Bereichname)
Müsste funktionieren.

Viel Spass
SunnyB

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Wolfgang!

ich stehe vor folgendem Problem:
Ich habe sehr viele Excel Dateien, die genau eines gemeinsam
haben.
In allen Dateien sind mehrere Rahmen, alle gleich formatiert,
aber an
unterschiedlichen Stellen im Dokument. In den Rahmen stehen
Inhalte, die ich gerne gezählt hätte. Also jeder Rahmen
beinhaltet 18 Zellen, die entweder leer sind oder nicht, wenn
nicht, hätte ich gerne nicht den Inhalt durchsucht sondern die
Anzahl der nichtleeren Zellen aufsummiert.
Geht sowas und wenn ja, wie?
Vielen Dank im Voraus

So was geht, aber will man das wirklich?

Lösungsskizze:

  • Öffne alle Dateien (ggf. über Dir("*.xls") oder sonstwie)
  • Durchlaufe alle Tabellen
  • Suche in diesen die gewünschte Rahmen-Formatierung der linken oberen Zelle
  • überprüfe, ob der gesamte Rahmen passt
  • zähle die Zellen im Bereich
  • bis keine weiteren Rahmen gefunden (falls auch mehrere in einer Tabelle sein können)
  • bis alle Tabellen durchsucht
  • bis alle Dateien durchsucht

Für den inneren Bereich zeichnest Du Dir am besten ein Makro auf, den Rest könntest Du hier irgendwo finden, der ist dann auch nicht mehr so schwer.

Für die Zukunft: solche Geschichten lassen sich besser mit der Definition von Namen erledigen, denn Worksheet(x).Range(„MeinBereich“) ist die genaue Adresse dann egal…

Gruß, Manfred

Hallo Wolfgang
Da bräuchte ich noch ein paar Hinweise:

Ich habe sehr viele Excel Dateien, …

Dateien= Mappen oder wohl eher Tabellenblätter in einer Mappe?

Einzelne Excel Dateien, die von mir vordefiniert, zum ausfüllen an Freunde verschickt und von vielen aber nicht in der Weise abgespeichert wurden wie ich das gerne hätte

Sehr viele. Wie viele ca.?

ca. 150

In den Rahmen stehen

Jeder Rahmen umfasst zwei Spalten und zehn Zeilen für Spalte 1 „Vorname“ Spalte 2 „Nachname“ oft ist aber nur der Vorname oder der Nachname alleine eingetragen.

Inhalte, die ich gerne gezählt hätte. Also jeder Rahmen
beinhaltet 18 Zellen,

Resultat der Zählung ist 18!
Oder willst du etwa die Werte addieren, falls alle Zellen
Inhalt haben? Dann sag das!

Ich möchte einfach wissen, wie viele Personen sich innsgesamt in alle Listen, entweder mit Vornamen oder Nachnamen oder beidem eingetragen haben.
Jede der Dateien kann die Rahmen an verschiedenen Stellen im Dokument haben, da teilweise von manchen einfach eine Kopie des Rahmens eingefügt wurde um mehr als 9 Personen einzutragen. Was aber bei allen Dateien gleich ist ist die Formatierung des Rahmens.

Wenn du das Ganze etwas präziser beschreibst, bekommst du eher
brauchbare Reaktionen.

Ist sehr kompliziert ich weiss. Das Ganze dient dazu:
Wir - Verein - haben eine Grossveranstaltung mit 1602 Plätzen. Pro Tisch können 9 Karten reserviert werden. Ich habe an die Mitglieder diese vorgefertigten Dateien verschickt damit sie sich mit Freunden und Familie eintragen. Jetzt sind viele Dateien um ein paar Plätze ergänzt worden indem der Rahmen doppelt in die Datei Kopiert wurde. Oft sit es aber so, dass die Rahmen nicht mit 9 Namen sondern nur mit 5 namen belegt sind und somit an Tischen Plätze frei. Um nun nicht alle Dateien öffnen zu müssen und alle Reservierungen einzeln zu zählen um zu wissen ob ich an der Kapazitätsgrenze angelangt bin, suche ich nach der einfachsten Möglichkeit alle eingegangenen Reservierungen zu zählen.

Bis dann
Erich

Ich hoffe nun bleiben keine Fragen mehr offen.

danke Wolfgang

Ist sehr kompliziert ich weiss. Das Ganze dient dazu:
Wir - Verein - haben eine Grossveranstaltung mit 1602 Plätzen.
Pro Tisch können 9 Karten reserviert werden. Ich habe an die
Mitglieder diese vorgefertigten Dateien verschickt damit sie
sich mit Freunden und Familie eintragen. Jetzt sind viele
Dateien um ein paar Plätze ergänzt worden indem der Rahmen
doppelt in die Datei Kopiert wurde. Oft sit es aber so, dass
die Rahmen nicht mit 9 Namen sondern nur mit 5 namen belegt
sind und somit an Tischen Plätze frei. Um nun nicht alle
Dateien öffnen zu müssen und alle Reservierungen einzeln zu
zählen um zu wissen ob ich an der Kapazitätsgrenze angelangt
bin, suche ich nach der einfachsten Möglichkeit alle
eingegangenen Reservierungen zu zählen.

Hallo WOlfgang,

da hilft nur eins: Alle 150 Dateien aufmachen, auf korrekten Inhalt prüfen (notfalls per Makro) und die Dateien mit mehr als eine Reservierung duplizieren, sodaß nur jeweils nur ein Tisch pro Datei existiert.

Aber mal ganz ehrlich (, auch wenn Excel keine Datenbank ist): der nächste Schritt sollte zwingend sein, dass alle Daten in eine Datei kommen: Besteller (mit [E-Mail-]Adresse), gewünschter Tisch, gewünschter Platz,zugeordneter Tisch, zugeordneter Platz. Oder wie wollt Ihr das Problem von teilweise belegten Tischen handhaben, damit nicht die Mitglieder der Gruppen bunt gemischt sind (ABABABABA statt AAAAABBBB)?

MfG Georg V.

Hallo Wolfgang
Ich habe einen Makroentwurf geschrieben, der die Einträge in dem Blatt zählt, die in einem Bereich stehen mit den Ueberschriften Vorname,Nachname und 15 Zeilen umfasst. s. unten
Das ist ein Anfang!
Die Sache muss aus einem „Summenblatt“ aufgerufen werden, das nachher auch alle Resultate einträgt: Blattname und Anzahl Einträge.
Dazu fehlt jedoch noch etwas: Haben alle eingesandten Mappen denselben Namen? Sind alle Daten auf der ersten Tabelle?
Als Weg sehe ich: Alle Mappen in dasselbe Verzeichnis kopieren und nacheinander mit dem zentralen Makro aufrufen; das geht jedoch nur, falls die Namen unterschiedlich sind. Andernfalls müsste man jede Mappe einzeln aufrufen (die Auswertung ist immer automatisch).
Falls es dich weiter insteressiert, bitte um Antworten
Bis dann
Erich

Option Explicit
Dim Obj, File, Start, Schluss, Zell, Anz
'Aufruf geschieht von der Auswertungs-Mappe aus
'nachdem die Mappe automatisch oder von Hand geöffnet wurde
Sub Auswerten()
File = ActiveWorkbook.name
'besteht der Titel "Vorname"?
Set Obj = Cells.Find("Vorname")
If Obj Is Nothing Then
 'oder dann halt "Nachname?"
 Set Obj = Cells.Find("Nachname")
 If Obj Is Nothing Then
 MsgBox (File + Chr(13) + "Titelzeile nicht vorhanden")
 Exit Sub
 End If
End If
Anz = 0
Obj.Select
ActiveCell.Offset(1, 0).Activate
Start = ActiveCell.Offset(1, 0).Address
If Obj = "Vorname" Then Schluss = ActiveCell.Offset(15, 1).Address
If Obj = "Nachname" Then Schluss = ActiveCell.Offset(15, -1).Address
For Each Zell In Range(Start, Schluss)
 'NICHT mit IsEmpty abfragen, da ein Leerschlag sonst gezählt wird!!
 If Zell.Value \> " " Then Anz = Anz + 1
Next
'diese Werte dann in die Sammelmappe eintragen
MsgBox File
MsgBox Anz
End Sub