Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
508to512
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
508to512
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Auswertung Fragebogen

Auswertung Fragebogen
30.10.2004 14:27:05
Kretzing
Hallo,
ich werte gerade Daten in Excel aus, die mit Grafstat erfasst wurden. Ein Problem habe ich bei den Textantworten. Die Daten liegen in einer Datei in folgender Form vor:
--- Nr 1 ---
[15]
22
--- Nr 2 ---
[2]
Berlin
[3]
Zusammenlebend
[5]
evangelisch
[6]
usw.
Dabei bezeichnet "--- Nr 1 ---" die Fragebogennr. und [2] die entsprechende Fragennr.. Meine Frage ist folgende: Kann man diese Daten mit einem Makro so analysieren, dass das Ergebnis eine Tabelle ist, in der die erste Spalte die Fragebogennr. (auch die ohne Antworten) enthält und die weiteren Spalten die Antworten des jeweiligen Fragebogens der Spalte mit der entsprechenden Fragennr (1-42) zugeordnet?
Vielen Dank!
André

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auswertung Fragebogen
30.10.2004 14:33:40
Josef
Hallo André!
Nachfrage.
Die Daten befinden sich in einer Textdatei, oder in einem Excelblatt?
Kannst du eine Beispieldatei hochladen?
Gruß Sepp
AW: Auswertung Fragebogen
30.10.2004 14:43:38
Kretzing
Hallo Sepp,
es handelt sich um eine Textdatei. Anbei habe ich einen Auszug hochgeladen.
https://www.herber.de/bbs/user/12798.txt
Dank Dir!
André
das ist keine Textdatei!
30.10.2004 14:57:27
Josef
Hallo André!
Sorry, aber das ist keine Textdatei sodern, eine Worddatei! (*.doc)
Gruß Sepp
AW: das ist keine Textdatei!
30.10.2004 16:02:46
Kretzing
Nun aber:
Es war eine *.fre-Datei, die ich in Word gespeichert habe. Nur habe ich dabei vergessen sie als txt zu speichern und habe nur den Anhang geändert. Sorry, mein Fehler!
Hier das richtige Ergebnis:
https://www.herber.de/bbs/user/12800.txt
Anzeige
AW: das ist keine Textdatei!
30.10.2004 16:54:43
Josef
Hallo André!
Probier mal und lass mich wissen, ob das Ergebnis deinen Vorstellungen entspricht.
Option Explicit

Sub Daten_Einlesen_Spezial()
'Daten aus Textdatei mit folgendem Aufbau Zeilenweise einlesen
'und auf Spalten und Zeilen aufteilen
'
'Aufbau der Textdatei:
'############################
'--- Nr 1 ---
'[15]
'Antowort Frage 15
'--- Nr 2 ---
'[2]
'Berlin
'[3]
'Zusammenlebend
'[5]
'evangelisch
'[6]
'Antowort Frage 6
'[13]
'############################
Dim strText As String, strFile As String, str As String
Dim lngLine As Long, lngC As Long, lRow As Long
Dim iCol As Integer
Dim wks As Worksheet
lRow = 1
Set wks = Sheets("Tabelle3") 'Tabelle in die geschrieben wird - anpassen
strFile = Application.GetOpenFilename("Textdateien (*.txt; *.log; *.dat),")
Close #1
'Öffnen und die Anzahl der zeilen fesstellen
Open strFile For Input As #1
lngLine = 0
Do While Not EOF(1)
Input #1, strText
lngLine = lngLine + 1
Loop
Close #1 'Schliessen
'Öffnen und Daten schreiben
Open strFile For Input As #1
For lngC = 1 To lngLine
Input #1, strText
If InStr(1, strText, "---") > 0 Then
lRow = lRow + 1
wks.Cells(lRow, 1) = Replace(strText, "---", "")
ElseIf InStr(1, strText, "[") > 0 Then
iCol = CInt(Replace(Replace(strText, "[", ""), "]", "")) + 1
Else
wks.Cells(lRow, iCol) = strText
End If
Next lngC
Close #1
End Sub

Gruß Sepp
Anzeige
AW: das ist keine Textdatei!
Kretzing
Vielen Dank für Deinen Vorschla, Sepp.
Excel meldet einen Laufzeitfehler 1004: "Die Methode "Getopenfilename" für das Objekt "_Application" ist fehlgeschlagen.
Ich habe die *.fre als *.txt gespeichert.
Was bedeutet das?
AW: das ist keine Textdatei!
30.10.2004 17:47:53
Josef
Hallo André!
Bei welcher Zeile genau bleibt er hängen?
Gruß Sepp
AW: das ist keine Textdatei!
30.10.2004 17:56:35
Kretzing
Genau da, ja.
AW: das ist keine Textdatei!
30.10.2004 18:22:30
Josef
Hallo Walter!
Das Excel XP mit "GetOpenFilename" nicht umgehen kann, kann ich mir nicht vorstellen!
Änder mal in
strFile = Application.GetOpenFilename()
If strFile = "Falsch" Then Exit Sub
Gruß Sepp
Der größte Teil funktioniert
30.10.2004 18:25:56
Kretzing
Vielen Dank! Jetzt schreibt das Makro nur teilweise, Dinge aus der gleichen Fragebogennummer eine Zeile tiefer. Somit sind Lücken in der Liste der Fragebogennummer in Spalte A. Bei einzelnen Fragebogennr und unterschiedlichen Fragen kommt das vor.
Anzeige
Das Problem ist...
30.10.2004 18:32:12
Kretzing
wenn eine Antwort mehrzeilig ist, schreibt das Makro die Daten eine Zeile tiefer und dort in die richtige Spalte die letzte Zeile der Antwort.
AW: Das Problem ist...
30.10.2004 18:44:02
Josef
Hallo Walter!
Das ich konnte nicht wissen, das mehrzeilige Antworten vorkommen, ist aber kein Problem!
Ich hab den Code noch etwas verfeinert.
Probier und lass mich wissen ob's funktioniert!
Option Explicit

Sub Daten_Einlesen_Spezial()
'Daten aus Textdatei mit folgendem Aufbau Zeilenweise einlesen
'und auf Spalten und Zeilen aufteilen
'
'Aufbau der Textdatei:
'############################
'--- Nr 1 ---
'[15]
'Antowort Frage 15
'--- Nr 2 ---
'[2]
'Berlin
'[3]
'Zusammenlebend
'[5]
'evangelisch
'[6]
'Antowort Frage 6
'[13]
'############################
Dim strText As String, strFile As String, str As String
Dim lngLine As Long, lngC As Long, lRow As Long, lngCalc As Long
Dim iCol As Integer
Dim wks As Worksheet
With Application
lngCalc = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
On Error GoTo FEHLER
lRow = 1
Set wks = Sheets("Tabelle3") 'Tabelle in die geschrieben wird - anpassen
strFile = Application.GetOpenFilename("Textdateien (*.txt; *.log; *.dat; *.fre),*.txt; *.log; *.dat; *.fre")
'alternativ "strFile = Application.GetOpenFilename()" wenn es sonst nicht funktioniert!
If strFile = "Falsch" Then Exit Sub
Close #1
'Öffnen und die Anzahl der zeilen fesstellen
Open strFile For Input As #1
lngLine = 0
Do While Not EOF(1)
Input #1, strText
lngLine = lngLine + 1
Loop
Close #1 'Schliessen
'Öffnen und Daten schreiben
Open strFile For Input As #1
For lngC = 1 To lngLine
Input #1, strText
If InStr(1, strText, "---") > 0 Then
lRow = lRow + 1
wks.Cells(lRow, 1) = Trim$(Replace(strText, "---", ""))
ElseIf InStr(1, strText, "[") > 0 Then
iCol = CInt(Trim$(Replace(Replace(strText, "[", ""), "]", ""))) + 1
Else
wks.Cells(lRow, iCol) = wks.Cells(lRow, iCol) & " " & Trim$(strText) & " "
wks.Cells(lRow, iCol) = Trim$(wks.Cells(lRow, iCol))
End If
Next lngC
Close #1
wks.Columns.AutoFit
FEHLER:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = lngCalc
End With
End Sub

Code eingefügt mit: Excel Code Jeanie
Gruß Sepp
Anzeige
SUPER!!!!
30.10.2004 18:55:16
Kretzing
Herzlichen Dank! Das Problem ist jetzt nur noch, dass manche Teilnehmer bei der Beantwortung einzelner Fragen "---" als Antwort eingetragen haben. :) Da es sich lediglich um 3 von nahezu 500 Fragebögen handelt, werde ich das per Hand ändern und dann funktioniert es bestens! Dank Dir vielmals! :)
AW: SUPER!!!!
30.10.2004 19:00:44
Josef
Hallo nochmal,
das geht auch noch, wenn du die Zeile
"If InStr(1, strText, "---") &gt 0 Then"
in
"If InStr(1, strText, "--- ") &gt 0 Then"
abänderst.
Gruß Sepp
AW: SUPER!!!!
30.10.2004 19:14:08
Kretzing
Eine super-elegante Lösung. Nochmals herzlichen Dank!
André
OT eigentlich sollte ich mich garnicht einmischen.
th.heinrich
hallo Sepp,
wg. VBA laie
aber was ist der unterschied zw.
"If InStr(1, strText, "---") &gt 0 Then"
in
"If InStr(1, strText, "--- ") &gt 0 Then"

gruss thomas
Anzeige
AW: OT eigentlich sollte ich mich garnicht einmischen.
30.10.2004 22:20:03
Björn
Hallo Thomas,
die Antwort lautet: "Ein Leerzeichen nach den drei Bindestrichen!"
Gruß
Björn
jetzt wird's zeit fuer die o-o ;-) ot.
th.heinrich
Die o-o hab ich. War also klar im Vorteil. ;-) oT
30.10.2004 22:53:09
Björn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige