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

TXT Import und Datenkonzentrierung

TXT Import und Datenkonzentrierung
04.08.2005 16:06:16
hastinger
Hallo Zusammen!
Ich stehe vor nem grossen Problem:
für die Diplomarbeit berechne ich mit einem Statikprogramm mehrere Systeme (in Summe 78) welche ich dann als *.txt abspeichern kann.
Ich bekomme die txt-Files in diesem "Format":
http://mitglied.lycos.de/greli4/sofistik/25e-v0^2.txt
(entschuldigt die Dateigröße - um Klarheit zu schaffen muss ich das so angeben)
wirklich brauchen tu ich nur diese Zeilen (ja man muss lange suchen um diese paar Zeilenblöcke im Txt-file zu finden - am besten "suchen" nach "maxz"):
http://mitglied.lycos.de/greli/sofistik/25e-v0^2.xls
und das ganze vorher Importiert in Excel (Trennung mit Leerzeichen, Komma, Tabstop, Komma statt Punkt etc etc - die volle Prozedur)...
Das Problem ist weiters: das Programm das die txt-files liefert spuckt nicht immer das Ergebnis an der selben Stelle aus, sondern einmal hat das File 25000 Zeilen, einmal "nur" 15000.
Vor 2 Monaten hab ich das mal händisch gemacht - und eine Woche gut gebraucht....
1.) importieren TXT in Excel
2.) die importierten Daten "zuschneiden" auf das was ich wirklich brauche...
hab jedesmal pro File unter "suchen" die Stelle gesucht wo die 16 Zeilen pro Lastfall stehen.
Ich weiss wie ich Makros starte, abspeichere, ABER vom Ändern und was in welcher Zeile passiert leider keinen Tau :-((
Ich wäre sehr dankbar wenn mir jemand helfen könnte das Problem zu lösen!
mit freundlichen Grüßen
Hastinger

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TXT Import und Datenkonzentrierung
04.08.2005 23:21:24
MichaV
Hallo,
du brauchst also alle Zelen, die mit
SCHALENSCHNITTKRÄFTE I N D E N K N O T E N
anfangen und bis zur nächsten Leerzeile bzw. bis zur Zeile mit dem Sonderzeichen gehen?
Gruß- Micha
PS: Rückmeldung wäre nett.
AW: TXT Import und Datenkonzentrierung
05.08.2005 09:53:45
hastinger
Hi Micha, danke für die Antwort!
Ja - es sind insgesamt 8 Zahlenblöcke wie folgt:
SCHALENSCHNITTKRÄFTE I N D E N K N O T E N
Knot Grup LF Name m-x m-y m-xy q-x q-y n-x n-y n-xy
Nr Nr Nr [kNm/m] [kNm/m] [kNm/m] [kN/m] [kN/m] [kN/m] [kN/m] [kN/m]
4035 0 1 MAXz-MX 247.07 1.03 179.61 -467.34 -3.65 0.00 0.00 0.00
2050 0 1 MINz-MX -0.09 -498.23 66.95 1.64 238.27 0.00 0.00 0.00
3550 0 1 MAXz-MY 6.35 39.11 35.84 15.65 45.04 0.00 0.00 0.00
2050 0 1 MINz-MY -0.09 -498.23 66.95 1.64 238.27 0.00 0.00 0.00
3031 0 1 MAXz-MXY 187.01 -64.79 281.57 -26.41 45.87 0.00 0.00 0.00
4050 0 1 MINz-MXY 27.77 6.09 14.52 -5.03 -13.78 0.00 0.00 0.00
3949 0 1 MAXz-QX 51.96 7.59 26.31 22.20 -9.26 0.00 0.00 0.00
4031 0 1 MINz-QX 197.24 -0.15 200.37 -546.14 0.63 0.00 0.00 0.00
2050 0 1 MAXz-QY -0.09 -498.23 66.95 1.64 238.27 0.00 0.00 0.00
4050 0 1 MINz-QY 27.77 6.09 14.52 -5.03 -13.78 0.00 0.00 0.00
2031 0 1 MAXz-NX 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MINz-NX 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MAXz-NY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MINz-NY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MAXz-NXY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MINz-NXY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
Das Problem ist weiters das manchmal ein "Sprung" in diesen Zeilen ist, sieht dann so aus:
SCHALENSCHNITTKRÄFTE I N D E N K N O T E N
Knot Grup LF Name m-x m-y m-xy q-x q-y n-x n-y n-xy
Nr Nr Nr [kNm/m] [kNm/m] [kNm/m] [kN/m] [kN/m] [kN/m] [kN/m] [kN/m]
4035 0 1 MAXz-MX 247.07 1.03 179.61 -467.34 -3.65 0.00 0.00 0.00
2050 0 1 MINz-MX -0.09 -498.23 66.95 1.64 238.27 0.00 0.00 0.00
3550 0 1 MAXz-MY 6.35 39.11 35.84 15.65 45.04 0.00 0.00 0.00
2050 0 1 MINz-MY -0.09 -498.23 66.95 1.64 238.27 0.00 0.00 0.00
3031 0 1 MAXz-MXY 187.01 -64.79 281.57 -26.41 45.87 0.00 0.00 0.00

Universität für Bodenkultur * 1180 Wien Seite:
DBPRIN - Selektive Ausgabe (V10.04 -99) 349
26.07.04
Halbsperre
Viertel 4 Rechteckslast
SCHALENSCHNITTKRÄFTE I N D E N K N O T E N
Knot Grup LF Name m-x m-y m-xy q-x q-y n-x n-y n-xy
Nr Nr Nr [kNm/m] [kNm/m] [kNm/m] [kN/m] [kN/m] [kN/m] [kN/m] [kN/m]
4050 0 1 MINz-MXY 27.77 6.09 14.52 -5.03 -13.78 0.00 0.00 0.00
3949 0 1 MAXz-QX 51.96 7.59 26.31 22.20 -9.26 0.00 0.00 0.00
4031 0 1 MINz-QX 197.24 -0.15 200.37 -546.14 0.63 0.00 0.00 0.00
2050 0 1 MAXz-QY -0.09 -498.23 66.95 1.64 238.27 0.00 0.00 0.00
4050 0 1 MINz-QY 27.77 6.09 14.52 -5.03 -13.78 0.00 0.00 0.00
2031 0 1 MAXz-NX 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MINz-NX 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MAXz-NY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MINz-NY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MAXz-NXY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
2031 0 1 MINz-NXY 155.31 -432.48 257.64 22.07 148.72 0.00 0.00 0.00
Ich habe diese Zeilen immer gefunden indem ich nach "MAXz-MX" gesucht habe - das kommt im ganzen Dokument NUR in diesen Zahlenblöcken vor.
lg aus Wien
Hastinger
Anzeige
AW: TXT Import und Datenkonzentrierung
05.08.2005 10:04:20
MichaV
Hallo,
nochmal, gibt es einen Grund, nicht auch "SCHALENSCHNITTKRÄFTE I N D E N K N O T E N" als Erkennungsmarke zu nehmen, das wäre dann erheblich einfacher.
Woran kann man sicher erkennen, daß das vor dem Sprung zu dem nach dem Sprung gehört? Ist die Anzahl der Zeilen dazwischen (
1:
2:Universität für Bodenkultur * 1180 Wien Seite:
3:DBPRIN - Selektive Ausgabe (V10.04 -99) 349
4:26.07.04
5:
6:Halbsperre
7:Viertel 4 Rechteckslast
8:
9:
10:SCHALENSCHNITTKRÄFTE I N D E N K N O T E N )
11:Knot Grup LF Name m-x m-y m-xy q-x q-y n-x n-y n-xy
12:Nr Nr Nr [kNm/m] [kNm/m] [kNm/m] [kN/m] [kN/m] [kN/m] [kN/m] [kN/m]
...immer gleich, sind es also Immer 12 Zeilen?
Ist es richtig wenn das Makro so arbeiten soll:Wenn der 1. Block zu Ende ist und nach 2 Zeilen "Universität für Bodenkultur" und nach 10 Zeilen "SCHALENSCHNITTKRÄFTE" kommt, dann ist es ein zusammenhängender Block, der in der 14. Zeile weiter geht.?
Wenn Du Dir da nicht sicher bist, dann lass ich es weg. Kannst Du ja händisch zusammenschieben. Wenn das richtig ist hast Du weniger Arbeit ;o)
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: TXT Import und Datenkonzentrierung
05.08.2005 10:27:51
hastinger
Hi Micha,
Du hast recht - eigentlich wärs besser den Anfang des Blocks mit "SCHALENSCHNITTKRÄFTE I N D E N K N O T E N" zu definieren.
Ich hab mit der einfachen Suche halt immer nach dem MAXZ-MX gesucht...aber eigentlich ist ja das nicht eindeutig, weil ja auch MAXZ-MXY als Suchergebnis geliefert wird.
"Wenn der 1. Block zu Ende ist und nach 2 Zeilen "Universität für Bodenkultur" und nach 10 Zeilen "SCHALENSCHNITTKRÄFTE" kommt, dann ist es ein zusammenhängender Block, der in der 14. Zeile weiter geht."
**vollzustimm** :-D
Der Text ist immer der gleiche, ebenso die Anzahl der unnützen Zeilen (13) wenn so ein Sprung vorkommt.
lg
Hastinger
Freu mich sehr auf Antwort!
Anzeige
AW: TXT Import und Datenkonzentrierung
05.08.2005 11:26:22
MichaV
Hallo
musst Dich bis heut Nacht gedulden, ist Freitag heute. ;o)
Ist aber kein grosses Problem, das kriegen wir hin.
Gruss- Micha
AW: TXT Import und Datenkonzentrierung
05.08.2005 11:33:57
hastinger
yep - kein Problem!
Bitte auch nicht böse sein wenn ich mich am Wochenende nicht melde hier - Internet nur am Studienort ;-)
Schöns WO-e
lg + Danke
Hastinger
AW: TXT Import und Datenkonzentrierung
06.08.2005 01:17:36
MichaV
Hallo,
gut das Du das sagst, ich werd da immer schnell ungeduldig ;o)
Füge das hier in das Codefenster Deiner Tabelle ein.
(Guckst Du: Wie und wo fügt man ein Makro bzw. Code ein)
Starten kannst Du das mit Alt+F8
Bin gespannt, ob es bei Dir auch klappt :o)


      
Option Explicit
Sub HastingerImport()
Dim Datei As String    'Dateiname
Dim Inhalt As String   'Inhalt der Datei
Dim Zeilen() As String 'einzelne Zeilen der Datei
Dim Import() As String 'einzelne Zeilen, die in Excel importiert werden sollen
ReDim Import(0)
Dim AusgabeBereich As Range
Dim AusgabeAbZelle As Range
Dim Zelle As Range
Dim DatNr As Integer
Dim i As Integer
Dim Importieren As Boolean
'Ab wo Ausgabe?
Set AusgabeAbZelle = Range("A2") 'oder =Activecell , wenn an markierter Zelle eingefügt werden soll

'Datei wählen
Datei = Application.GetOpenFilename
If Datei = "Falsch" Then Exit Sub
'Datei einlesen
DatNr = FreeFile
Open Datei For Binary As #DatNr
  Inhalt = Space(LOF(DatNr))
  
Get #1, , Inhalt
Close #DatNr
'Datenfeld mit den Zeilen der Datei erstellen
Zeilen = Split(Inhalt, vbCrLf)
'jede einzelne Zeile der Datei prüfen
For i = 0 To UBound(Zeilen)
  
If Zeilen(i) Like "*SCHALENSCHNITTKRÄFTE   I N   D E N   K N O T E N*" Then
    
'Es beginnt ein zu importierender Block
    Importieren = True
    
'Ausgabe- Feld um 1 erhöhen
    If UBound(Import) = 0 Then
      
ReDim Import(1 To 1)
    
Else
      
ReDim Preserve Import(1 To UBound(Import) + 1)
    
End If
    
'Zeile in das Feld schreiben
    Import(UBound(Import)) = Zeilen(i)
  
Else
    
If Importieren Then
      
If Zeilen(i) <> "" And InStr(Zeilen(i), Chr(12)) = 0 Then
        
'es soll importiert werden und die Zeile ist nicht leer oder enthält
        'kein Sonderzeichen (ASCII- Code 12)
        ReDim Preserve Import(1 To UBound(Import) + 1)
        Import(
UBound(Import)) = Zeilen(i)
      
Else
        
'es soll importiert werden aber die Zeile ist leer oder enthält
        'das Sonderzeichen (ASCII- Code 12)
        'also prüfen, ob in 9 Zeilen wieder "Schalenschnittkräfte..." kommt...
        If i < UBound(Zeilen) - 9 Then
          
If Zeilen(i + 9) Like "*SCHALENSCHNITTKRÄFTE   I N   D E N   K N O T E N*" Then
            
'ja, dann 11 Zeilen überspringen
            i = i + 11
          
Else
            
'nein, dann 2 Leerzeilen einfügen und Import stoppen
            ReDim Preserve Import(1 To UBound(Import) + 2) '+2 -> 2 Leerzeilen
            Importieren = False
          
End If
        
End If
      
End If
    
End If
  
End If
Next
'Ausgabebereich festlegen, ich gehe mal davon aus, daß es nie mehr als 20 Spalten werden
Set AusgabeBereich = Range(Cells(AusgabeAbZelle.Row, 1), _
                           Cells(AusgabeAbZelle.Row + 
UBound(Import) - 1, 20))
'Zeilen in 1. Spalte eintragen
AusgabeBereich.Columns(1) = WorksheetFunction.Transpose(Import)
'Auftrennen durch "Text in Spalten", als Werte Text-formatiert einfügen
'Weil am Anfang jeder Zeile ein Leerzeichen steht, wird die 1. Spalte übersprungen
'(sonst wäre Spalte A leer)
AusgabeBereich.Columns(1).TextToColumns Destination:=AusgabeAbZelle, DataType:=xlDelimited, _
        Space:=
True, Other:=False, FieldInfo:= _
        Array(Array(1, 9), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), _
        Array(7, 2), Array(8, 2), Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), _
        Array(13, 2), Array(14, 2), Array(15, 2), Array(16, 2), Array(17, 2), Array(18, 2), _
        Array(19, 2), Array(20, 2))
'Mit Standart formatieren
AusgabeBereich.NumberFormat = "General"
'Zahlen mit *1 berechnen, damit "richtiges" Zahlenformat hergestellt wird
For Each Zelle In AusgabeBereich
  
If IsNumeric(Zelle) Then
    
If InStr(Zelle, ".") > 0 Then
      
'in Zahlen mit Punkt diesen durch Komma ersetzen
      Zelle = WorksheetFunction.Substitute(Zelle, ".", ",")
    
End If
    
If Not Zelle = "" Then Zelle = Zelle * 1
  
End If
Next
MsgBox "Fertig"
End Sub 
Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: TXT Import und Datenkonzentrierung
08.08.2005 11:14:44
hastinger
Hi Micha!!
Genial - also wirklich!!!! Genauso sollts gehen :-D
Bewundere dein Engagement und bedanke mich für deine Hilfe!
Ein paar Problemchen noch - um das ganze zu perfektionieren:
1) der Import startet jedesmal in Spalte "G" - egal ob ich A1 aktiviere oder nicht
2) die importierten Zeilen sind horizontal versetzt, mal ne Spalte nach links, mal nach rechts.
3) "." wird nicht durch "," ersetzt
das is mal das erste was mir so aufgefallen ist...
bitte nicht als Kritik auffassen - als DAU (dümmster angenommener User) sag ich gleich was sache ist ;-)
lg und DANKE vorerst mal
Hastinger
Anzeige
AW: TXT Import und Datenkonzentrierung
08.08.2005 11:24:50
MichaV
Hallo,
das hat nix mit DAU zu zun sondern ist ein erheblicher Mangel, der durch mein falsches Runterladen Deiner txt entstanden ist. Ist aber nicht so wild:
Füge diese 2 Wörter ein:
AusgabeBereich.Columns(1).TextToColumns Destination:=AusgabeAbZelle, DataType:=xlDelimited, _
Space:=True, Other:=False, ConsecutiveDelimiter:=True, FieldInfo:= _
Das dürfte das Problem erschlagen.
Gruss- Micha
PS: Rückmeldung wäre nett.
AW: TXT Import und Datenkonzentrierung
08.08.2005 13:39:33
hastinger
Lieber Micha,
**sprachlosbin**
es funktioniert alles wunderbar - ein Traum!!!
Was zwei Wörter alles ausmachen!
Ich hab nun etliche Probeläufe gestartet - und bin noch auf einen "bug" gestossen (vom Statikprogramm).
Bei extremen statischen Verhältnissen wird ein derartiges Ergebnis ausgespuckt:
SCHALENSCHNITTKRÄFTE I N D E N K N O T E N
Knot Grup LF Name M-x M-y M-xy Q-x Q-y N-x N-y N-xy
Nr Nr Nr [kNm/m] [kNm/m] [kNm/m] [kN/m] [kN/m] [kN/m] [kN/m] [kN/m]
511 0 1 MAXZ-MX 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
591 0 1 MINZ-MX -14899. 6420.53 15463.9 71226.9 280287. 0.00 0.00 0.00
671 0 1 MAXZ-MY -9114.4 9154.81 7097.80 -14438. 109976. 0.00 0.00 0.00
511 0 1 MINZ-MY 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
512 0 1 MAXZ-MXY 189.96 -62418. 57056.8 135996. 256474. 0.00 0.00 0.00
551 0 1 MINZ-MXY 23380.3 -7077.3 -27814. 149660. 399396. 0.00 0.00 0.00
511 0 1 MAXZ-QX 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
513 0 1 MINZ-QX -5409.4 -55225. 43067.0 -52066. 31106.7 0.00 0.00 0.00
551 0 1 MAXZ-QY 23380.3 -7077.3 -27814. 149660. 399396. 0.00 0.00 0.00
511 0 1 MINZ-QY 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
511 0 1 MAXZ-NX 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
511 0 1 MINZ-NX 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
511 0 1 MAXZ-NY 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
511 0 1 MINZ-NY 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
511 0 1 MAXZ-NXY 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
511 0 1 MINZ-NXY 35552.9 -64354. 22743.6 190919.-470058. 0.00 0.00 0.00
dh das Programm fügt kein Leerzeichen mehr ein sobald die Zahl sechsstellig ist und die Nachkommastelle fehlt.
Und Werte größer als 10^6 werden vom Statikprogramm nicht mehr bei den Ergebnissen angezeigt sondern als ********** ausgegeben...
Das liefert wieder falsche Tabellen, weil beim Import ohne Leerzeichen zB "345380.-848009." in einer Zelle ausgegeben wird...
Eigentlich schwach dieses Statik-Programm.
Micha, nachdem ich jetz genug Zeit von dir in Anspruch genommen hab, werde ich das mal ins Forum des Programmentwicklers stellen.
Dein Skript funktioniert echt genial - ich weiss net wie oft ich DANKE und JUHUU sagen könnt!!
Dickes fettes DANKE, du hast mir wirklich geholfen!
lg
Hastinger
Anzeige
AW: TXT Import und Datenkonzentrierung
08.08.2005 13:51:12
MichaV
Hallo,
na fein, das freut mich.
Das Problem ist, daß die Werte nicht durch ein "ordentliches" Trennzeichen (Tab, Semikolon) getrennt werden, also muß man ein Leerzeichen nehmen. Wenn große Zahlen dieses Leerzeichen verschwinden lassen, dann ist nur noch eine Erkennung der Spalten durch "feste Breite" möglich, also Spalte x beginnt ab Zeichen y, Spalte z beginnt ab Zeichen i usw. Das geht aber bei dieser Datei nicht, weil die Werte nicht bündig in den Spalten stehen. Ist also wirklich eine ungünstige Textausgabe.
Wenn das Programm ein Forum hat (sieht wie eine Textausgabe aus den 80er Jahren aus ;o)) dann frag mal, ob man anstelle des Ausrucks nicht eine Trennzeichengetrennte Textdatei exportieren kann.
Ansonsten viel Erfolg mit Deiner Arbeit!
Gruss- Micha
Anzeige
AW: TXT Import und Datenkonzentrierung
05.08.2005 11:34:33
hastinger
yep - kein Problem!
Bitte auch nicht böse sein wenn ich mich am Wochenende nicht melde hier - Internet nur am Studienort ;-)
Schöns WO-e
lg + Danke
Hastinger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige