Excel evtl. VB Zeichen X zählen und Summe in eine extra Tabelle eintragen
Mehrere Excel Dateien, die jeweils ein oder mehrere X-Zeichen enthalten kann, auf 72 Zellen verteilt.
Hallo,
Datei1 hat eine Tabelle mit 72 Zellen
Datei2 hat eine Tabelle mit 72 Zellen
...
Es soll gezählt und aufgelistet werden, wie viele X bei allen Dateien in der Zelle 1, Zelle 2, ... enthalten sind. Ergebnis in einer neuen Tabelle ausgeben.
neue Tabelle:
Zelle 1 = 12
Zelle 2 = 44
...
Ich bin da noch recht unerfahren. Wäre froh, wenn man mir helfen könnte. Tipps, Anregungen...
Freundlich grüßt
lrt0088
Hallo,
Datei1 hat eine Tabelle mit 72 Zellen
Datei2 hat eine Tabelle mit 72 Zellen
...
Es soll gezählt und aufgelistet werden, wie viele X bei allen Dateien in der Zelle 1, Zelle 2, ... enthalten sind. Ergebnis in einer neuen Tabelle ausgeben.
neue Tabelle:
Zelle 1 = 12
Zelle 2 = 44
...
Ich bin da noch recht unerfahren. Wäre froh, wenn man mir helfen könnte. Tipps, Anregungen...
Freundlich grüßt
lrt0088
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 50108
Url: https://administrator.de/forum/excel-evtl-vb-zeichen-x-zaehlen-und-summe-in-eine-extra-tabelle-eintragen-50108.html
Ausgedruckt am: 17.05.2025 um 16:05 Uhr
9 Kommentare
Neuester Kommentar
Moin lrt088,
willkommen im Forum.
Vermutlich hat so lange keine/r auf Deine Frage geantwortet, weil noch eine wesentliche Detailangabe fehlt.
[Oder weil noch alle Lachtränen in den Augen haben wegen der ersten M$-Vi$ta-Feedbacks...]
JHowever, was mir fehlt, um eine sinnvolle Strategie vorzuschlagen, ist die Info, ob es denn um namentlich bekannte (handverlesene) Dateien Datei1.xls, Datei2.xls etc handelt
-oder-
ob es denn täglich/stündlich wechselnde Dateien mit "zufälligen" Dateinamen z.B. aus einem Log-Verzeichnis handelt.
Im ersten Fall (jede Datei ist einzeln anzugeben und angegeben), dann würde ich eine einfache neue Summentabelle aufmachen, in der von Hand jeweils die Formel eingetragen wird:
=ZÄHLENWENN([Datei1.xls]!Mappe1.A:Datei1.xls]!Mappe1.A;"*X*")
-bzw- für Sparsame
=ZÄHLENWENN([Datei1.xls]!Mappe1.A1:Datei1.xls]!Mappe1.A72;"*X*")
...diese Formel in die erste Zeile (da sollte dann in Deinem Beispiel 12 herauskommen) usw.
Im zweiten Fall (namentlich nicht bekannte Dateien) wäre der Weg über ein kleines Makro sinnvoller... geleiches Schema, nur dass das ZÄHLENWENN() auf neudeutsch COUNTIF() heißt.
Gruß
Biber
[Edit]...nach bastla's Kommentar..
Sorry, ich hatte es so interpretiert, dass pro Zeile in Spalte A ein oder eben kein Zeichen "x" vorhanden ist...
Die ZÄHLENWENN()-Funktion mit obiger Syntax zählt entsprechend nur die Anzahl Zeilen, die ein "X" enthalten.
[/Edit]
willkommen im Forum.
Vermutlich hat so lange keine/r auf Deine Frage geantwortet, weil noch eine wesentliche Detailangabe fehlt.
[Oder weil noch alle Lachtränen in den Augen haben wegen der ersten M$-Vi$ta-Feedbacks...]
JHowever, was mir fehlt, um eine sinnvolle Strategie vorzuschlagen, ist die Info, ob es denn um namentlich bekannte (handverlesene) Dateien Datei1.xls, Datei2.xls etc handelt
-oder-
ob es denn täglich/stündlich wechselnde Dateien mit "zufälligen" Dateinamen z.B. aus einem Log-Verzeichnis handelt.
Im ersten Fall (jede Datei ist einzeln anzugeben und angegeben), dann würde ich eine einfache neue Summentabelle aufmachen, in der von Hand jeweils die Formel eingetragen wird:
=ZÄHLENWENN([Datei1.xls]!Mappe1.A:Datei1.xls]!Mappe1.A;"*X*")
-bzw- für Sparsame
=ZÄHLENWENN([Datei1.xls]!Mappe1.A1:Datei1.xls]!Mappe1.A72;"*X*")
...diese Formel in die erste Zeile (da sollte dann in Deinem Beispiel 12 herauskommen) usw.
Im zweiten Fall (namentlich nicht bekannte Dateien) wäre der Weg über ein kleines Makro sinnvoller... geleiches Schema, nur dass das ZÄHLENWENN() auf neudeutsch COUNTIF() heißt.
Gruß
Biber
[Edit]...nach bastla's Kommentar..
Sorry, ich hatte es so interpretiert, dass pro Zeile in Spalte A ein oder eben kein Zeichen "x" vorhanden ist...
Die ZÄHLENWENN()-Funktion mit obiger Syntax zählt entsprechend nur die Anzahl Zeilen, die ein "X" enthalten.
[/Edit]
Hallo lrt0088 und willkommen im Forum!
Damit ich Dich richtig verstehe: In den Zellen A1:A72 jeder Datei befindet sich eine jeweils unterschiedliche Anzahl von "X" (aber keine anderen Zeichen). In einer anderen Datei soll eine Tabelle für jede der Dateien in einer Spalte (also A1:A72 für Datei1, B1:B72 für Datei2) die Anzahl der "X" angeben - richtig?
Sofern diese Annahmen zutreffen, könntest Du folgende Formel verwenden (für alle Zeilen kopieren; analog für "Datei2"):
HTH
bastla
[Edit] @Biber - gehöre wohl auch schon zu den "älteren Leuten" ... [/Edit]
Damit ich Dich richtig verstehe: In den Zellen A1:A72 jeder Datei befindet sich eine jeweils unterschiedliche Anzahl von "X" (aber keine anderen Zeichen). In einer anderen Datei soll eine Tabelle für jede der Dateien in einer Spalte (also A1:A72 für Datei1, B1:B72 für Datei2) die Anzahl der "X" angeben - richtig?
Sofern diese Annahmen zutreffen, könntest Du folgende Formel verwenden (für alle Zeilen kopieren; analog für "Datei2"):
=LÄNGE([Datei1.xls]Tabelle1!A1)
HTH
bastla
[Edit] @Biber - gehöre wohl auch schon zu den "älteren Leuten" ... [/Edit]
Hallo lrt088!
Vielleicht vorweg eine Vorgangsweise, die ich in dieser Situation wählen würde (obwohl ich versucht hätte, gar nicht erst in diese Situation zu kommen
):
Als ersten und wichtigsten Schritt würde ich alle Bewertungen in einem Blatt zusammenzufassen, wobei ich aus den Spalten Zeilen (Datensätze) erzeugen und jedes "X" durch die Zahl 1 ersetzen würde.
Durch das Zusammenfassen vereinfacht sich eine ev weitere Auswertung (zB: sind genug Fragen beantwortet, um diesen "Fragebogen" überhaupt als valide anzuerkennen, oder sollte er besser aussortiert werden; gibt es Zusammenhänge zwischen den Antworten auf Frage 2 und 7; ...), und ich könnte auch eine große Menge an "Fragebögen" erfassen (bis Office 2003 hat Excel ja nur 256 Spalten pro Tabellenblatt). Außerdem könnte dann auch ein Export in eine Datenbank Deiner Wahl erfolgen.
Das Umwandeln von "X" in 1 ermöglicht das Berechnen einfacher Anzahlen (wie von Dir ursprünglich gewünscht) sogar per "SUMME" (ansonsten gäbe es auch "SUMMENPRODUKT" bzw "Array"-Formeln).
Ein entsprechendes VBA-Programm (Makro) könnte so aussehen:
Vorgangsweise:
Sammle alle Einzeldateien in einem gemeinsamen Ordner (im Beispiel oben "Z:\Fragebogendateien").
Erstelle eine neue Excel-Datei "Zusammenfassung.xls" und speichere diese nicht im gleichen Ordner wie die Einzeldateien.
Gehe mit Alt-F11 in den VBA-Editor, doppelklicke im Projekt-Explorer (links oben) auf "Diese Arbeitsmappe" und füge den oben stehenden Code ein.
Passe die beiden markierten Positionen an Deine Gegebenheiten an.
Setze den Cursor auf die Zeile "Const ..." und drücke die blaue "Play"-Taste in der Symbolleiste (oder die Taste F5).
Nachdem alle Dateien bearbeitet wurden, erhältst Du den Hinweis "Fertig."
Danach findest Du in der Zusammenfassungsdatei Deine einzelnen Datenspalten als Zeilen wieder (Zeile 1 sollte frei sein - dort kannst Du eine lfd Nummer von 1 - 72 unterbringen; vielleicht fügst Du nach dieser "Überschrift" noch eine Leerzeile ein (damit beim n#chsten Schritt nicht irrtümlich die Nummer mitgerechnet wird).
Jetzt kannst Du durch Summierung die Anzahl der ursprünglichen "X" in den einzelnen Spalten bestimmen.
Falls Dir diese Vorgangsweise nicht zusagt, bitte um Rückmeldung.
Grüße
bastla
Vielleicht vorweg eine Vorgangsweise, die ich in dieser Situation wählen würde (obwohl ich versucht hätte, gar nicht erst in diese Situation zu kommen
Als ersten und wichtigsten Schritt würde ich alle Bewertungen in einem Blatt zusammenzufassen, wobei ich aus den Spalten Zeilen (Datensätze) erzeugen und jedes "X" durch die Zahl 1 ersetzen würde.
Durch das Zusammenfassen vereinfacht sich eine ev weitere Auswertung (zB: sind genug Fragen beantwortet, um diesen "Fragebogen" überhaupt als valide anzuerkennen, oder sollte er besser aussortiert werden; gibt es Zusammenhänge zwischen den Antworten auf Frage 2 und 7; ...), und ich könnte auch eine große Menge an "Fragebögen" erfassen (bis Office 2003 hat Excel ja nur 256 Spalten pro Tabellenblatt). Außerdem könnte dann auch ein Export in eine Datenbank Deiner Wahl erfolgen.
Das Umwandeln von "X" in 1 ermöglicht das Berechnen einfacher Anzahlen (wie von Dir ursprünglich gewünscht) sogar per "SUMME" (ansonsten gäbe es auch "SUMMENPRODUKT" bzw "Array"-Formeln).
Ein entsprechendes VBA-Programm (Makro) könnte so aussehen:
Option Explicit
Sub Zusammenfassen()
Const sSourcePath As String = "Z:\Fragebogendateien" '######## anpassen ########
Dim wbGes As Workbook, wbTeil As Workbook
Dim fso As Object, oFile As Object
Dim rNext As Integer
Set wbGes = ActiveWorkbook
Set fso = CreateObject("Scripting.FileSystemObject")
For Each oFile In fso.GetFolder(sSourcePath).Files
If LCase(Right(oFile.Name, 4)) = ".xls" Then
Application.Workbooks.Open (oFile.Path)
Set wbTeil = ActiveWorkbook
wbTeil.Worksheets(1).Activate
Range("A1:A72").Copy '##################### anpassen ####################
wbGes.Worksheets(1).Activate
rNext = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row + 1
ActiveSheet.Cells(rNext, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
End If
wbTeil.Close
Next
wbGes.Worksheets(1).Activate
Cells.Replace What:="X", Replacement:="1", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="x", Replacement:="1", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
wbGes.Save
MsgBox "Fertig."
End Sub
Vorgangsweise:
Sammle alle Einzeldateien in einem gemeinsamen Ordner (im Beispiel oben "Z:\Fragebogendateien").
Erstelle eine neue Excel-Datei "Zusammenfassung.xls" und speichere diese nicht im gleichen Ordner wie die Einzeldateien.
Gehe mit Alt-F11 in den VBA-Editor, doppelklicke im Projekt-Explorer (links oben) auf "Diese Arbeitsmappe" und füge den oben stehenden Code ein.
Passe die beiden markierten Positionen an Deine Gegebenheiten an.
Setze den Cursor auf die Zeile "Const ..." und drücke die blaue "Play"-Taste in der Symbolleiste (oder die Taste F5).
Nachdem alle Dateien bearbeitet wurden, erhältst Du den Hinweis "Fertig."
Danach findest Du in der Zusammenfassungsdatei Deine einzelnen Datenspalten als Zeilen wieder (Zeile 1 sollte frei sein - dort kannst Du eine lfd Nummer von 1 - 72 unterbringen; vielleicht fügst Du nach dieser "Überschrift" noch eine Leerzeile ein (damit beim n#chsten Schritt nicht irrtümlich die Nummer mitgerechnet wird).
Jetzt kannst Du durch Summierung die Anzahl der ursprünglichen "X" in den einzelnen Spalten bestimmen.
Falls Dir diese Vorgangsweise nicht zusagt, bitte um Rückmeldung.
Grüße
bastla
Hallo lrt088!
Da hatte ich Dich falsch interpretiert, da ich angenommen hatte, alle "Antwort"-Zellen stünden untereinander und würden nur ein "X" (oder vielleicht auch "x") für "ja" enthalten oder bei einem "nein" leer geblieben sein ...
Außerdem war ich von nur einem "Fragebogen" je Datei ausgegangen (so als hätte jede/r Befragte eine eigene Datei erhalten und diese "ausgefüllt" retourniert).
Jetzt sieht es für mich so aus, dass also je Datei die Zellen B11, B14, B17, ... , B224 und analog die Spalten D, F, H, J, L die Ergebnisse enthalten - richtig? Ist sicher gestellt, dass diese Zellen nur entweder leer oder mit "X" gefüllt sind, oder soll angenommen werden, dass jede nicht leere Zelle als "angekreuzt "gilt?
Falls ich das richtig erfasst habe, als neuer Vorschlag:
Ergebnisdatei mit je einer Zeile pro Antwortdatei, in Spalte A (als Rückbezug) der Dateiname, ab Spalte B 72 Zellen mit den Antworten (auf 72 Fragen) in numerischer Form, also 0 für "nicht beantwortet", 1 für "Sehr gut", ... Bei Mehrfachantworten wäre dann der Inhalt zB 34 (diese Zellen ließen sich danach per "Bedingter Formatierung" sehr leicht farblich kennzeichnen - die Zellen mit Inhalt 0 natürlich ebenso).
Die Auswertung könnte danach mit "ZÄHLENWENN" erfolgen, um spaltenweise die Häufigkeiten feststellen zu können.
Soll ich auf dieser Basis einen Versuch machen?
Grüße
bastla
[Edit] Zelladressen B11, B14, ... korrigiert [/Edit]
Da hatte ich Dich falsch interpretiert, da ich angenommen hatte, alle "Antwort"-Zellen stünden untereinander und würden nur ein "X" (oder vielleicht auch "x") für "ja" enthalten oder bei einem "nein" leer geblieben sein ...
Außerdem war ich von nur einem "Fragebogen" je Datei ausgegangen (so als hätte jede/r Befragte eine eigene Datei erhalten und diese "ausgefüllt" retourniert).
Jetzt sieht es für mich so aus, dass also je Datei die Zellen B11, B14, B17, ... , B224 und analog die Spalten D, F, H, J, L die Ergebnisse enthalten - richtig? Ist sicher gestellt, dass diese Zellen nur entweder leer oder mit "X" gefüllt sind, oder soll angenommen werden, dass jede nicht leere Zelle als "angekreuzt "gilt?
Falls ich das richtig erfasst habe, als neuer Vorschlag:
Ergebnisdatei mit je einer Zeile pro Antwortdatei, in Spalte A (als Rückbezug) der Dateiname, ab Spalte B 72 Zellen mit den Antworten (auf 72 Fragen) in numerischer Form, also 0 für "nicht beantwortet", 1 für "Sehr gut", ... Bei Mehrfachantworten wäre dann der Inhalt zB 34 (diese Zellen ließen sich danach per "Bedingter Formatierung" sehr leicht farblich kennzeichnen - die Zellen mit Inhalt 0 natürlich ebenso).
Die Auswertung könnte danach mit "ZÄHLENWENN" erfolgen, um spaltenweise die Häufigkeiten feststellen zu können.
Soll ich auf dieser Basis einen Versuch machen?
Grüße
bastla
[Edit] Zelladressen B11, B14, ... korrigiert [/Edit]
Hallo lrt088!
Ich hatte schon auf Verdacht ein wenig mit folgendem Ergebnis experimentiert:
In dieser Fassung werden alle Bewertungszellen, die nicht leer sind, gezählt (auch wenn Dir jemand ein "U" für ein "X" vorgemacht haben sollte
).
Die jeweiligen Anzahlen (von "0" für nicht beantwortet bis "7" für Mehrfachantwort) werden eingetragen und zur Kontrolle werden alle Anzahlen addiert - diese Summe müsste in jeder Spalte mit der Zahl der Fragebögen übereinstimmen.
Die Beschreibung der Vorgangsweise (siehe oben) zur Verwendung des Programms (bis "Fertig.") gilt weiterhin.
Grüße
bastla
Ich hatte schon auf Verdacht ein wenig mit folgendem Ergebnis experimentiert:
Option Explicit
Sub Zusammenfassen()
Const sSourcePath As String = "Z:\Fragebogendateien" '######## anpassen ########
Const intErsteZeile = 3 'der Tabelle mit der Zusammenfassung
Const intAnzahlFragen = 20
Const intAnzahlAuspr = 6
Dim wbGes As Workbook, wbTeil As Workbook
Dim fso As Object, oFile As Object
Dim intZeile As Integer, i As Integer, j As Integer
Dim strVon As String, strBis As String
Dim astrAntwort(intAnzahlFragen) As String
Set wbGes = ActiveWorkbook
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 1 To intAnzahlFragen
With wbGes.Worksheets(1).Cells(intErsteZeile, i + 1)
.FormulaR1C1 = "Frage" & Chr(10) & CStr(i)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.ColumnWidth = 5
End With
Next
intZeile = intErsteZeile + 2
For Each oFile In fso.GetFolder(sSourcePath).Files
If LCase(Right(oFile.Name, 4)) = ".xls" Then
Application.Workbooks.Open (oFile.Path)
Set wbTeil = ActiveWorkbook
For i = 1 To intAnzahlFragen
astrAntwort(i) = ""
For j = 1 To intAnzahlAuspr
If wbTeil.Worksheets(1).Cells(i * 3 + 8, j * 2).Value <> "" Then
astrAntwort(i) = astrAntwort(i) & CStr(j)
End If
Next
If astrAntwort(i) = "" Then astrAntwort(i) = "0"
Next
wbGes.Worksheets(1).Cells(intZeile, 1).Value = oFile.Name
For i = 1 To intAnzahlFragen
wbGes.Worksheets(1).Cells(intZeile, i + 1).Value = astrAntwort(i)
Next
End If
wbTeil.Close
intZeile = intZeile + 1
Next
wbGes.Worksheets(1).Activate
With Range(Cells(intErsteZeile + 2, 2), Cells(intZeile - 1, intAnzahlFragen + 1))
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0"
.FormatConditions(1).Interior.ColorIndex = 19
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="6"
.FormatConditions(2).Interior.ColorIndex = 34
End With
strVon = "R" & CStr(intErsteZeile + 2) & "C"
strBis = "R" & CStr(intZeile - 1) & "C"
For j = 0 To intAnzahlAuspr + 1
With wbGes.Worksheets(1).Cells(intZeile + 1 + j, 1)
.Value = j
.HorizontalAlignment = xlLeft
End With
For i = 1 To intAnzahlFragen
If j <= intAnzahlAuspr Then
wbGes.Worksheets(1).Cells(intZeile + 1 + j, i + 1).FormulaR1C1 = _
"=COUNTIF(" & strVon & ":" & strBis & ",RC1)"
Else
wbGes.Worksheets(1).Cells(intZeile + 1 + j, i + 1).FormulaR1C1 = _
"=COUNTIF(" & strVon & ":" & strBis & ","">=""&RC1)"
wbGes.Worksheets(1).Cells(intZeile + 1 + j + 2, i + 1).FormulaR1C1 = _
"=SUM(R" & CStr(intZeile + 1) & "C:R[-2]C)"
End If
Next
Next
wbGes.Save
MsgBox "Fertig."
End Sub
Die jeweiligen Anzahlen (von "0" für nicht beantwortet bis "7" für Mehrfachantwort) werden eingetragen und zur Kontrolle werden alle Anzahlen addiert - diese Summe müsste in jeder Spalte mit der Zahl der Fragebögen übereinstimmen.
Die Beschreibung der Vorgangsweise (siehe oben) zur Verwendung des Programms (bis "Fertig.") gilt weiterhin.
Grüße
bastla