Thema Datum  Von Nutzer Rating
Antwort
Rot txt einlesen, daten auswerten, als anderes xls speichern
12.09.2011 10:24:06 Falk
*****
NotSolved
12.09.2011 12:28:23 dekor
***
NotSolved
12.09.2011 12:37:40 falk
NotSolved
12.09.2011 12:43:09 Dekor
NotSolved
12.09.2011 14:14:14 Gast10577
NotSolved
12.09.2011 16:35:59 Falk
NotSolved
13.09.2011 09:57:35 Dekor
NotSolved

Ansicht des Beitrags:
Von:
Falk
Datum:
12.09.2011 10:24:06
Views:
2311
Rating: Antwort:
  Ja
Thema:
txt einlesen, daten auswerten, als anderes xls speichern

Morgen

Ich habe folgendes Anliegen. Eine txt-Datei soll eingelesen werden (zur Einfachheit erst einmal fester Pfad) auf einen extra sheet, dann sollen die Daten kontrolliert werden und auffällige Werte farblich markiert werden (siehe vorhandener Text), danach soll ein speichern des sheets als extra result.xls erfolgen und das zwischendurch erstellte sheet wieder gelöscht werden.

Hab nicht wirklich Ahnung von VBA und hatte bereits Not den Abgleich mit Normwerten hinzubekommen, aber auch damit wurde mir hier bereits geholfen:
Hierzu schon mal mein bis jetzt erstelltes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
Option Explicit
 
Sub AFREQ()
Dim wrkbook As Workbook
Set wrkbook = ActiveWorkbook
'hier definieren wir den namen der variable für dein workbook (name der .xls datei)
 
  
Dim max_x As Integer
max_x = wrkbook.Worksheets("eeg").UsedRange.Rows.Count
max_x = max_x
'hier lesen wir die anzahl zeilen aus und erstellen eine variabel für das ergebnis
 
Dim spalte As String
Dim X As Integer
Dim y As Integer
Dim z As Integer
z = 1
 
Dim a As Variant
Dim b As String
Dim c As String
 
 
 
Do
    If z = 1 Then
        spalte = "AFREQ_controls"
        z = z + 1
    ElseIf z = 2 Then
        spalte = "AFREQ_cases"
        z = z + 1
    ElseIf z = 3 Then
        spalte = "AFREQ_cc"
        z = z + 1
    End If
    X = 1
    y = 0
    Do
        y = y + 1
    Loop Until wrkbook.Worksheets("eeg").Cells(X, y).Value = spalte Or y = 100
            'es wird in der ersten Zeile nach gewünschtem Spaltennamen gesucht
             
        X = X + 1
            Do
                a = Split(wrkbook.Worksheets("eeg").Cells(X, y).Value, "|") 'split-array, "|" ist der Trenner
                b = a(0)                                                    'b=erster Teil des arrays "a"
                c = a(1)                                                    'c=zweiter Teil des arrays "a"
 
 
                If b <= "0.01" Or c >= "0.99" Then
                    wrkbook.Worksheets("eeg").Cells(X, y).Select
                    Selection.Interior.ColorIndex = 34
                    X = X + 1
                    Else
                    X = X + 1
                End If
            Loop Until X = max_x + 1
Loop Until z = 4
 'programm durchläuft hier zelle um zelle bis es am ende ankommt (max_x = max Zeilenanzahl) und überprüft ob der inhalt < 0,01 oder über 0,99 ist ist fals nicht wird die zelle rot markiert...
 
 
End Sub
 
Sub HWE()
Dim wrkbook As Workbook
Set wrkbook = ActiveWorkbook
'hier definieren wir den namen der variable für dein workbook (name der .xls datei)
 
  
Dim max_x As Integer
max_x = wrkbook.Worksheets("eeg").UsedRange.Rows.Count
max_x = max_x
'hier lesen wir die anzahl zeilen aus und erstellen eine variabel für das ergebnis
 
Dim spalte As String
Dim X As Integer
Dim y As Integer
Dim z As Integer
z = 1
 
Do
    If z = 1 Then
        spalte = "HWE_controls"
        z = z + 1
    ElseIf z = 2 Then
        spalte = "HWE_cases"
        z = z + 1
    ElseIf z = 3 Then
        spalte = "HWE_cc"
        z = z + 1
    End If
    X = 1
    y = 0
    Do
        y = y + 1
    Loop Until wrkbook.Worksheets("eeg").Cells(X, y).Value = spalte Or y = 100
            'es wird in der ersten Zeile nach gewünschtem Spaltennamen gesucht
             
        X = X + 1
            Do
                If wrkbook.Worksheets("eeg").Cells(X, y).Value <= 0.05 Then
                    wrkbook.Worksheets("eeg").Cells(X, y).Select
                    Selection.Interior.ColorIndex = 34
                    X = X + 1
                    Else
                    X = X + 1
                End If
            Loop Until X = max_x + 1
Loop Until z = 4
 'programm durchläuft hier zelle um zelle bis es am ende ankommt (max_x = max Zeilenanzahl) und überprüft ob der inhalt < 0,01 oder über 0,99 ist ist fals nicht wird die zelle rot markiert...
 
 
End Sub
 
Sub P()
Dim wrkbook As Workbook
Set wrkbook = ActiveWorkbook
'hier definieren wir den namen der variable für dein workbook (name der .xls datei)
 
  
Dim max_x As Integer
max_x = wrkbook.Worksheets("eeg").UsedRange.Rows.Count
max_x = max_x
'hier lesen wir die anzahl zeilen aus und erstellen eine variabel für das ergebnis
 
Dim spalte As String
Dim X As Integer
Dim y As Integer
Dim z As Integer
z = 1
 
Do
    If z = 1 Then
        spalte = "P_controls"
        z = z + 1
    ElseIf z = 2 Then
        spalte = "P_cases"
        z = z + 1
    ElseIf z = 3 Then
        spalte = "P_cc"
        z = z + 1
    ElseIf z = 4 Then
        spalte = "P_ADD_controls"
        z = z + 1
    ElseIf z = 5 Then
        spalte = "P_ADD_cases"
        z = z + 1
    ElseIf z = 6 Then
        spalte = "P_ADD_cc"
        z = z + 1
    End If
    X = 1
    y = 0
    Do
        y = y + 1
    Loop Until wrkbook.Worksheets("eeg").Cells(X, y).Value = spalte Or y = 100
            'es wird in der ersten Zeile nach gewünschtem Spaltennamen gesucht
             
        X = X + 1
            Do
                If wrkbook.Worksheets("eeg").Cells(X, y).Value <= 0.00001 Then
                    wrkbook.Worksheets("eeg").Cells(X, y).Select
                    Selection.Interior.ColorIndex = 3
                    X = X + 1
                ElseIf wrkbook.Worksheets("eeg").Cells(X, y).Value <= 0.001 Then
                    wrkbook.Worksheets("eeg").Cells(X, y).Select
                    Selection.Interior.ColorIndex = 45
                    X = X + 1
                ElseIf wrkbook.Worksheets("eeg").Cells(X, y).Value <= 0.05 Then
                    wrkbook.Worksheets("eeg").Cells(X, y).Select
                    Selection.Interior.ColorIndex = 6
                    X = X + 1
                Else
                    X = X + 1
                End If
            Loop Until X = max_x + 1
Loop Until z = 7
 'programm durchläuft hier zelle um zelle bis es am ende ankommt (max_x = max Zeilenanzahl) und überprüft ob der inhalt < 0,01 oder über 0,99 ist ist fals nicht wird die zelle rot markiert...
 
 
End Sub

 

FAZIT: txt einlesen, temp. extra sheet, auswerten, sheet speichern als result.xls

man könnte sicherlich auch erst die daten einlesen, dann gleich speichern und dann erst die werte kontrollieren... wie das jetzt sinnvoller ist liegt nicht in meinem ermessensbereich :)

 

Vielen Dank schon mal fürs Lesen! :)

Falk


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot txt einlesen, daten auswerten, als anderes xls speichern
12.09.2011 10:24:06 Falk
*****
NotSolved
12.09.2011 12:28:23 dekor
***
NotSolved
12.09.2011 12:37:40 falk
NotSolved
12.09.2011 12:43:09 Dekor
NotSolved
12.09.2011 14:14:14 Gast10577
NotSolved
12.09.2011 16:35:59 Falk
NotSolved
13.09.2011 09:57:35 Dekor
NotSolved