Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Bestimmte Zeilen aus mehreren Datensätzen auslesen und in neues Excel File schreiben

Mitglied: sims

sims (Level 1) - Jetzt verbinden

10.10.2013, aktualisiert 10:58 Uhr, 4664 Aufrufe, 5 Kommentare, 1 Danke

Hallo Leute,
da ich selber nicht mehr weiter komme - bitte um hilfe!



Habe ein Excel File das ca 97200 Datensätze enthält.
Es handelt sich hierbei um eine Messung die automatisch durchgeführt wurde.
Die Messung wurde jeden TAG ca. alle 5min durchgeführt aber leider sind auch Fehlmessungen enthalten daher ist der Zeitintervall nicht alle 5min sonder ändert sich manchmal.



Die Tabelle sieht wie folgt aus:

Name TimeString VarValue Validity Time_ms
Messung01 14.01.2012 12:00 14 1 41530789369
Messung02 14.01.2012 12:05 15 1 41530789377
.
.
.
Messung14 15.01.2012 12:01 14 1 41530789380
Messung15 15.01.2012 12:06 18 1 41530789369
.
.
.
usw (97200 weiter Datensätze)





Jetzt würde ich gerne alles Datensätze durchsuchen und aus zb. jedem TAG um 12:00 Uhr die Zeile auslesen und in ein anderes Excel-File oder Txt Datei schreiben. Sollte jetzt der Fall eintreffen das zb. bei einem TAG die Uhrzeit 12:00 Uhr nicht vorhanden ist sonder die nächste Messung erst um 12:01 ist dann soll eben dieser Wert genommen werden und wenn 12:01 auch nicht vorhanden ist dann soll der nächste Wert (12:06) verwendet werden.


Meine Wunschtabelle sollte dann so aussehen:

Name TimeString VarValue Validity Time_ms
Messung01 14.01.2012 12:00 14 1 41530789369
Messung14 15.01.2012 12:01 14 1 41530789380
Messung15 16.01.2012 12:06 18 1 41530789369
Messung32 17.01-2012 12:00 12 1 41530789369

usw.


...also immer ein Messung aus einem TAG zu einer bestimmten Zeit und wenn die Zeit (zb. 12:00) nicht vorhanden ist dann soll eben die nachste Zeit

(12:01,12:06...) genommen werden und in die neue Tabelle übernommen




besten DANK
Mitglied: bastla
10.10.2013 um 17:49 Uhr
Hallo sims!

Auf die Schnelle (einen Schönheitspreis werde ich damit nicht gewinnen) etwa so:
01.
Sub ZeilenFiltern()
02.
Set Quelle = ThisWorkbook
03.
Set Ziel = Workbooks.Add
04.

05.
Zieldatei = "D:\Auszug.xlsx" 'Pfad der Zieldatei
06.
ZZeile = 1 'erste Zeile der Zieltabelle
07.
QZeile = 1 'erste zu verarbeitende Zeile der Quelltabelle
08.
QSpalten = 5 'erste 5 Spalten der Quelltabelle übertragen
09.
QKritSpalte = "B" 'Spalte mit dem Kriterium (Timestamp)
10.

11.
Zuletzt = 0 ' Startwert für Datum setzen
12.
With Quelle.Worksheets(1)
13.
    'Überschriftenzeile übertragen
14.
    Ziel.Worksheets(1).Cells(ZZeile, "A").Resize(1, QSpalten) = .Cells(QZeile, "A").Resize(1, QSpalten).Value 'Zellen ab Spalte A übertragen
15.
    QZeile = QZeile + 1 'nächste Zeile der Quelldatei
16.
    ZZeile = ZZeile + 1 'nächste Zeile der Zieldatei
17.
    
18.
    Datum = Int(.Cells(QZeile, QKritSpalte).Value) 'Datum aus aktueller Zeile der Quelldatei auslesen
19.
    Zeit = .Cells(QZeile, QKritSpalte).Value - Datum 'Uhrzeit aus aktueller Zeile der Quelldatei ermitteln
20.
    Do Until Datum = 0 'alle Datenzeilen der Quelldatei durchgehen
21.
        If Datum <> Zuletzt Then 'nur einen Datensatz / Tag
22.
            If Zeit >= 0.5 Then ' 0.5 = 12:00:00
23.
                Ziel.Worksheets(1).Cells(ZZeile, "A").Resize(1, QSpalten) = .Cells(QZeile, "A").Resize(1, QSpalten).Value 'Zellen ab Spalte A übertragen
24.
                ZZeile = ZZeile + 1 'nächste Zeile der Zieldatei
25.
                Zuletzt = Datum 'verarbeitetes Datum zwischenspeichern
26.
            End If
27.
        End If
28.
        QZeile = QZeile + 1 'nächste Zeile der Quelldatei
29.
        Datum = Int(.Cells(QZeile, QKritSpalte).Value) 'Datum aus aktueller Zeile der Quelldatei auslesen
30.
        Zeit = .Cells(QZeile, QKritSpalte).Value - Datum 'Uhrzeit aus aktueller Zeile der Quelldatei ermitteln
31.
    Loop
32.
End With
33.
Ziel.Worksheets(1).Columns.AutoFit 'alle Spalten der Zieldatei auf optimale Breite setzen
34.
Ziel.SaveAs Zieldatei 'Zieldatei speichern
35.
End Sub
Das Makro ist aus der Quelldatei zu starten (siehe Zeile 2).

Grüße
bastla
Bitte warten ..
Mitglied: sims
13.10.2013 um 16:28 Uhr
Hallo bastla,
ich sag einfach nur DANK DANK DANKE! Das hat mir jede mänge arbeit abgenommen!!! daumen hoch

Es hat einwandfrei funktioniert!


Jetzt hätte ich noch eine Frage und zwar wäre es möglich das man für jeden Tag zwei Werte abgreift - z.B. einmal um 12Uhr (so wie es e schon dieses script macht) und einmal um 24Uhr so das man pro Tag zwei Werte hat in der neuen Tabelle stehen hat.

Wäre das möglich ?

besten DANK für deine HIlfe und unterstüzung

mfg
Bitte warten ..
Mitglied: bastla
13.10.2013 um 19:52 Uhr
Hallo sims!

Schöne, dass es soweit passt.

Die Variante mit 2 Messungen pro Tag könnte so aussehen:
01.
Sub ZeilenFiltern()
02.
Set Quelle = ThisWorkbook
03.
Set Ziel = Workbooks.Add
04.

05.
Zieldatei = "D:\Auszug.xlsx" 'Pfad der Zieldatei
06.
ZZeile = 1 'erste Zeile der Zieltabelle
07.
QZeile = 1 'erste zu verarbeitende Zeile der Quelltabelle
08.
QSpalten = 5 'erste 5 Spalten der Quelltabelle übertragen
09.
QKritSpalte = "B" 'Spalte mit dem Kriterium (Timestamp)
10.

11.
Zuletzt = 0 ' Startwert für Datum setzen
12.
Termin1 = True 'Kennzeichen für "Wert für Termin1 übertragen"
13.
Termin2 = True 'Kennzeichen für "Wert für Termin2 übertragen"
14.
With Quelle.Worksheets(1)
15.
    'Überschriftenzeile übertragen
16.
    Ziel.Worksheets(1).Cells(ZZeile, "A").Resize(1, QSpalten) = .Cells(QZeile, "A").Resize(1, QSpalten).Value 'Zellen ab Spalte A übertragen
17.
    QZeile = QZeile + 1 'nächste Zeile der Quelldatei
18.
    ZZeile = ZZeile + 1 'nächste Zeile der Zieldatei
19.
    
20.
    Datum = Int(.Cells(QZeile, QKritSpalte).Value) 'Datum aus aktueller Zeile der Quelldatei auslesen
21.
    Zeit = .Cells(QZeile, QKritSpalte).Value - Datum 'Uhrzeit aus aktueller Zeile der Quelldatei ermitteln
22.
    Do Until Datum = 0 'alle Datenzeilen der Quelldatei durchgehen
23.
        If Datum <> Zuletzt Then
24.
            If Termin1 Then 'nur einmal am Tag den Datensatz für Termin1 übertragen
25.
                If Zeit >= 0 Then ' 0 = 00:00:00; Abfrage eigentlich nicht nötig (nur, falls ein anderer Zeitpunkt vewendet werden sollte)
26.
                    Ziel.Worksheets(1).Cells(ZZeile, "A").Resize(1, QSpalten) = .Cells(QZeile, "A").Resize(1, QSpalten).Value 'Zellen ab Spalte A übertragen
27.
                    ZZeile = ZZeile + 1 'nächste Zeile der Zieldatei
28.
                    Termin1 = False 'Termin1 an diesem Tag nicht nochmals übertragen
29.
                    Termin2 = True 'Termin2 kann übertragen werden
30.
                End If
31.
            End If
32.
            If Termin2 Then 'nur einmal am Tag den Datensatz für Termin2 übertragen
33.
                If Zeit >= 0.5 Then ' 0.5 = 12:00:00
34.
                    Ziel.Worksheets(1).Cells(ZZeile, "A").Resize(1, QSpalten) = .Cells(QZeile, "A").Resize(1, QSpalten).Value 'Zellen ab Spalte A übertragen
35.
                    ZZeile = ZZeile + 1 'nächste Zeile der Zieldatei
36.
                    Zuletzt = Datum 'verarbeitetes Datum zwischenspeichern
37.
                    Termin2 = False 'Termin2 an diesem Tag nicht nochmals übertragen
38.
                    Termin1 = True 'Termin1 kann übertragen werden (ist aber erst wieder am nächsten Tag möglich - siehe "Zuletzt")
39.
                End If
40.
            End If
41.
        End If
42.
        QZeile = QZeile + 1 'nächste Zeile der Quelldatei
43.
        Datum = Int(.Cells(QZeile, QKritSpalte).Value) 'Datum aus aktueller Zeile der Quelldatei auslesen
44.
        Zeit = .Cells(QZeile, QKritSpalte).Value - Datum 'Uhrzeit aus aktueller Zeile der Quelldatei ermitteln
45.
    Loop
46.
End With
47.
Ziel.Worksheets(1).Columns.AutoFit 'alle Spalten der Zieldatei auf optimale Breite setzen
48.
Ziel.SaveAs Zieldatei 'Zieldatei speichern
49.
End Sub
Die Formatierung des Timestamps in Spalte B der Ergebnisdatei auf "TT.MM.JJJJ hh:mm:ss" musst Du vermutlich nachträglich nochmals durchführen (bei Werten von genau 00:00:00 Uhr wird vermutlich nur das Datum angezeigt).

Grüße
bastla
Bitte warten ..
Mitglied: sims
13.10.2013 um 22:55 Uhr
Hey bastla,
nochmals BESTEN DANK - dein "know how" ist richtig gold wert für mich!

es hat einwandfrei funktioniert - DANKE!


hätte da noch einen andere Frage: und zwar kannst du ein BUCH oder Internetsite empfehlen womit ich als einsteiger mir gutes Excel VBA anlernen kann?

danke
Bitte warten ..
Mitglied: bastla
18.10.2013 um 22:06 Uhr
Hallo sims!
kannst du ein BUCH oder Internetsite empfehlen womit ich als einsteiger mir gutes Excel VBA anlernen kann?
Bei herber.de habe ich öfter mal brauchbare Hinweise gefunden, die mittlerweile auch zu einem "wikibook" VBA in Excel zusammengestellt wurden - ob sich das für Dich eignet, musst Du selbst herausfinden ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Vorherigen Datensatz mit aktuellem Datensatz vergleichen

Frage von THEFRUSTMicrosoft Office1 Kommentar

Hallo, ich bin neu hier und hoffe auf Eure Hilfe zu einer Abfrage in ACCESS 2013. Zum oben genannten ...

Microsoft Office

Word bestimmt Sprache selbst

gelöst Frage von honeybeeMicrosoft Office1 Kommentar

Hallo, habe in Word 2016 ein nerviges Problem: Auf meinem Computer (Windows 10) sind zwei Sprachen installiert: Deutsch und ...

Mac OS X

Safari öffnet bestimmt Seite nicht

Frage von tomi93Mac OS X2 Kommentare

Hallo , ich habe an einem iMac bei uns im Unternehmen das Problem das Safari dort eine bestimmte Seite ...

Microsoft Office

Serienbrief Nächster Datensatz Wenn

Frage von Druide83Microsoft Office2 Kommentare

Hallo, ist das erste mal dass ich mit Serienbriefen in Word zu tun habe und mir fehlt auch nur ...

Neue Wissensbeiträge
Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von Lochkartenstanzer vor 3 StundenHumor (lol)8 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...

Windows Update

KB4517297 verfügbar, behebt Fehler in VB6 VBA VBScript

Information von sabines vor 6 StundenWindows Update

Das Update behebt mögliche Fehler in VB6, VBA und VBScript, die durch das Update KB4512486 vom August entstanden sind. ...

Viren und Trojaner

Staatstrojaner soll auch per Einbruch installiert werden können

Information von transocean vor 1 TagViren und Trojaner3 Kommentare

Moin, Bundesinnenminister Horst Seehofer will dem Verfassungsschutz Wohnungseinbrüche erlauben, um den geplanten Staatstrojaner zu installieren. Gruß Uwe

Windows 7
Win7 Update scheitert KB4512506
Information von infowars vor 2 TagenWindows 7

Falls jemand auch das Problem hat mit dem: Monatliches Sicherheitsqualitätsrollup für Windows 7 für x64-basierte-Systeme (KB4512506) Das scheint mit ...

Heiß diskutierte Inhalte
Hyper-V
Bei Neuaufbau auf Core-Server setzen?
gelöst Frage von dertowaHyper-V32 Kommentare

Hallo zusammen, ich habe vor einigen Monaten die Verantwortung für eine EDV-Landschaft übernommen die seit Jahren von einem Dienstleister ...

Switche und Hubs
Glasfaser-Anschluss Telekom muss verteilt werden
Frage von cansoniSwitche und Hubs30 Kommentare

Vorweg: Bin nur Anwender und kein Experte Die Situation: Der Vermieter stellt einen Glasfaseranschluss in der Wohnung bereit. Wir ...

Hyper-V
VMs von Hyper-V auf externer Festplatte
gelöst Frage von SnowbirdHyper-V18 Kommentare

Hallo, ich möchte gerne von VirtualBox auf Hyper-V umsteigen und würde auch gerne weiterhin meine VMs auf der externen ...

Festplatten, SSD, Raid
SSDs durch Lagerung ohne Strom nach 6 Monaten defekt?!?
gelöst Frage von GlobetrotterFestplatten, SSD, Raid17 Kommentare

Moin Gemeinde Ich hatte gerade nen Trauerspiel Habe hier etliche NAS-Geräte herumfahren welche ich mal auf die Seite gelegt ...