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

Frage Microsoft Microsoft Office

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, 4053 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
Batch & Shell
Bestimmte Zeile aus mehreren Dateien in eine neue Datei schreiben
gelöst Frage von Oggy76Batch & Shell5 Kommentare

Hallo zusammen, meine Kenntnisse in Sachen batch/shell sind ehr auf Anfängerniveau zu sehen. Grund -basics im CMD-Prompt sind vorhanden, ...

Batch & Shell
Batch-Script zum Auslesen eines bestimmten Strings aus bestimmter Zeile aus Text-File
gelöst Frage von aes0p.Batch & Shell13 Kommentare

Hallo! Ich möchte gern via Batch-Script einen String aus einer Text-Datei auslesen. Die Textdatei hat folgenden Inhalt: vssadmin 1.1 ...

Batch & Shell
In Batch mehrere Zeilen auslesen ?!?
gelöst Frage von JanInfoHDBatch & Shell2 Kommentare

Ich habe in Programm in Batch geschrieben, doch es ließt aus einer .txt-Datei immer nur die erste Zeile, Was ...

Microsoft Office
Excel: Höchsten Wert pro Tag auslesen und in ein neues Excel File überspielen
gelöst Frage von simsMicrosoft Office10 Kommentare

Hall Leute, ich benötige wieder mal eurer KNOW HOW! Ich habe eine *.csv Datei welche sehr viele Messwerte enthält ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 47 MinutenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 18 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 19 StundenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 20 StundenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen21 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...