5.9k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

folgende Situation:

Ich habe mehrere EXCEL Sheets mit ca. 12k Datensätzen... aus diesen Datensätzen brauch ich allerdings pro Sheet nur einen Bruchteil.

Ich hab mir eine Theoretische Lösung überlegt, schaffe diese allerdings nicht umzusetzen.

Die Tabelle ist wie folgt aufgebaut:

A B C D E F G H I
Beginn 02.11.2010 00:00:00
Ende 02.11.2010 00:30:00

dann exakt 73 Zeilen Drunter befindet sich in I der Begriff "MC1200"
darunter folgt dann eine Auflistung von Zahlen.
137
145
.....
Meine Idee nun:
Man macht eine Schleifenabfrage mit den Kriterien

wenn A =" Beginn" , dann springe auf C und kopiere dieses Feld C auf neue Datenblatt

>> dann rücke 73 felder runter bis "MC1200" kommt.
danach prüfe jede zeile unter "MC1200" und gib diese Zahlen auf den neuen Datenblatt aus bis ein Leerfeld kommt.

In meinen Sheet werden alle Messungen erfasst im halben Stundentakt.. d.h. 00:30:00 - 01:00:00, 01:00:00 - 01:30:00 bis 23:00:00 - 00:00:00 (Folgetag)

Am Ende sollte quasi:

Start
Ende
Werte

rauskommen und die Zeiten alle nebeneinander.

Ich hoffe jemand kann sich mir annehmen und mir helfen :)

17 Antworten

0 Punkte
Beantwortet von
hallöchen,

die 1. musterdatei war aus dem kopf, da ich die originalle nur aufn uni labor PC hatte - die 2. datei die ich dir schickte war ausm labor PC :)

habs lauffähig gemacht - aber es spuckt nix aus :)
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi charlie brown :-)

da sich die zweite datei grundlegend von der ersten unterscheidet,fehlt es hier an info

aus obigen grund wird das makro natuerlich nicht greifen

mehr info !

gruss nighty
0 Punkte
Beantwortet von
hallo nighty,

inwiefern mehr info :)

vom Prinzip her ist die Datei die selbe, nur dass eben die ganzen anderen Parameter für mich uninteressant sind.

Also:

Ich bräuchte wie schon oben beschrieben, die Uhrzeiten (jeden halbe Stunden Takt) und dann die Zahlen unter dem Parameter "MC1200", der befindet sich 75 Zeilen unter "Measurement" in Zelle I.



Bzw. ist es auch möglich die Ausgabe untereinander anzuordnen?

Zeitintervall1 Zeitintervall2
wert1 wert1
wert2 wert2
wert3 ......
...

Hoffe dass reicht dir als Info :)

hab nun die Ersten 2 Wochen per Hand ausgefiltert - aber die nächsten 4 Wochen wären schon toll mit nem Makro.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi charlie brown:-)

was spricht dagegen das wort Beginn gegen das wort Measurement im code auszutauschen :-))

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi charlie brown :-)

probier mal

gruss nighty

max spalten 200 zur zeit

Sub Auswertung()
Call EventsOff
Worksheets(1).Activate
Dim SpalteAB() As Variant
Dim SpalteI() As Variant
Dim NWert(10000, 200) As Variant
Dim Zelle As Long, Zwert As Long, NwertIndex As Long, werte As Long
Zwert = 1
SpalteAB() = Range("A2:B" & Cells(Rows.Count, 9).End(xlUp).Row)
SpalteI() = Range("I2:I" & Cells(Rows.Count, 9).End(xlUp).Row)
For Zelle = LBound(SpalteAB()) To UBound(SpalteAB())
If UCase(Mid(SpalteAB(Zelle, 1), 1, 4)) = "MEAS" Then
NWert(NwertIndex, 1) = SpalteAB(Zelle, 2)
NWert(NwertIndex, 0) = "Beginn"
NwertIndex = NwertIndex + 1
NWert(NwertIndex, 1) = SpalteAB(Zelle + 1, 2)
NWert(NwertIndex, 0) = "Ende"
NwertIndex = NwertIndex + 1
NWert(NwertIndex, 0) = "Wert"
For werte = Zelle + 78 To UBound(SpalteAB())
NWert(NwertIndex, Zwert) = SpalteI(werte, 1)
Zwert = Zwert + 1
If SpalteI(werte, 1) = "" Then
Zelle = Zelle + 78
Exit For
End If
Next werte
Zwert = 1
NwertIndex = NwertIndex + 1
End If
Next Zelle
Worksheets(2).Activate
Range(Cells(2, 1), Cells(10000, 201)) = NWert()
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
0 Punkte
Beantwortet von
vielen dank nighty,

habs nun so hinbekommen wie ich es brauche :D

gruß

b00mer
...