Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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
Inhaltsverzeichnis

VBA Spalten an hand von Uhrzeiten reduzieren

VBA Spalten an hand von Uhrzeiten reduzieren
07.05.2014 11:49:58
Uhrzeiten
Hallo,
ich habe folgendes Problem:
Ich habe div. Tabellenblätter mit Messdaten und Uhrzeitangaben in Dezimal und im Uhrzeitformat (Stunde, Minute, Sekunde). Nun brauche ich aber nur den ersten und letzten Wert der Messung sowie jede Minute dazwischen. Diese Zeilen müssen dann in ein neues Tabellenblatt kopiert werden. Da ich ca. 80 Tabellenblätter habe, die dazu alle anders heißen, gibt es eine Lösung in VBA? Ich habe da schon was, allerdings schreibt er mir nur den ersten Wert in ein neues Blatt und ich muß jedes Tabellenblatt anwählen.
Sub testines()
Dim DieseDatei As String
Dim DatName As String
Dim Vergleichs_Wert As Variant
Dim r As Long
Dim s As Integer
Dim Letzte_Reihe As Long
Dim Mldg, Titel, Voreinstellung
Dim ZellInhalt As Variant
Dim ZweiterIndex As Variant
'neues Tabellenblatt anlegen
Dim NewName As String
Debug.Print ActiveSheet.Name
Sheets.Add
NewName = InputBox("Geben Sie einen Tabellenblattnamen ein")
ActiveSheet.Name = NewName
i = 1
Sheets(i + 2).Activate
Range("e2").Select
Vergleichs_Wert = 0
' Vergleichs-Wert - Dialog
Mldg = "Bitte Vergleichs-Wert ( > 0 ) eingeben"  ' Aufforderung festlegen.
Titel = "Parameter-Abfrage" ' Titel festlegen.
Voreinstellung = 0 ' Voreinstellung festlegen.
' Meldung, Titel und Standardwert anzeigen.
Vergleichs_Wert = InputBox(Mldg, Titel, Voreinstellung)
' Bei Abbruch
If Vergleichs_Wert = "" Then Exit Sub
' Umwandlung Input in Dezimal-Wert
Vergleichs_Wert = CDec(Vergleichs_Wert)
' Werte kleiner/gleich 0 ausschliessen
If (Vergleichs_Wert = 0 Or Vergleichs_Wert  " & Vergleichs_Wert & "  Vergleichs_Wert Then
' Datenreihe kopieren
Rows(r).Select
Selection.Copy
Sheets("Test").Activate
Range("A1").Activate
Selection.PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Sheets(i + 4).Activate
Range("e2").Select
ZweiterIndex = ZellInhalt
Letzte_Reihe = r
End If
' Naechste Reihe
r = r + 1
Cells(r, s).Select
Loop
'Falls letzte kopierte Reihe = letzte Reihe nicht doppelt kopieren
Letzte_Reihe = Letzte_Reihe + 1
If r - Letzte_Reihe > 0 Then
r = r - 1
Cells(r, s).Select
Call DatenKopieren
End If
Application.ScreenUpdating = True
End Sub

Kann mir jemand helfen?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Spalten an hand von Uhrzeiten reduzieren
07.05.2014 14:59:07
Uhrzeiten
Hallo Ines,
dein Code lebt leider von Select, ActiveCell, Selection, Activate.
Das macht es schwierig nachzuvollziehen was genau passieren soll.
Ich hab das jetzt mal so umgesetzt, wie ich es verstanden habe.
Nach Eingabe der Vorgabewerte werden alle in der aktiven Arbeitsmappe vorhandenen Tabellenblätter abgearbeitet. Die neuen Blätter werden dabei immer am Ende angefügt. Durch eine kleine Anpassung werden die Blätter in einer neuen Arbeitsmappe angelegt - Hinweise im Code.
Gruß
Franz
Sub testines()
Dim Vergleichs_Wert As Variant
Dim r As Long
Dim s As Integer
Dim Letzte_Reihe As Long
Dim Mldg, Titel, Voreinstellung
Dim ZellInhalt As Variant
Dim ZweiterIndex As Variant
Dim wkb As Workbook, wks As Worksheet
Dim wkbZiel As Workbook, wksZiel As Worksheet
Dim Zeile_Z As Long
Dim NewName As String
Dim intSheet As Integer
Set wkb = ActiveWorkbook
'  Set wkbZiel = ActiveWorkbook 'wird diese Zeile weggelassen, dann werden _
reduzierte Blätter in separater Datei mit gleichen Blattnamen angelegt
Vergleichs_Wert = 0
'Eingabe des Vergleichswertes einaml für alle Blätter
' Vergleichs-Wert - Dialog
Mldg = "Bitte Vergleichs-Wert ( > 0 ) eingeben"  ' Aufforderung festlegen.
Titel = "Parameter-Abfrage" ' Titel festlegen.
Voreinstellung = 0 ' Voreinstellung festlegen.
' Meldung, Titel und Standardwert anzeigen.
Vergleichs_Wert = InputBox(Mldg, Titel, Voreinstellung)
' Bei Abbruch
If Vergleichs_Wert = "" Then Exit Sub
' Umwandlung Input in Dezimal-Wert
Vergleichs_Wert = CDec(Vergleichs_Wert)
' Werte kleiner/gleich 0 ausschliessen
If (Vergleichs_Wert = 0 Or Vergleichs_Wert  " & Vergleichs_Wert _
& " = Vergleichs_Wert Then
' Datenreihe kopieren
wks.Rows(r).Copy
End If
End If
If Application.CutCopyMode = xlCopy Then
With wksZiel
.Cells(Zeile_Z, 1).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
Zeile_Z = Zeile_Z + 1
ZweiterIndex = ZellInhalt
End If
Next r
End If
Application.ScreenUpdating = True
Next intSheet
Beenden:
Application.ScreenUpdating = True
End Sub

Anzeige
AW: VBA Spalten an hand von Uhrzeiten reduzieren
08.05.2014 10:43:54
Uhrzeiten
Genial! Vielen Dank.
Gruß Ines

AW: VBA Spalten an hand von Uhrzeiten reduzieren
08.05.2014 12:54:23
Uhrzeiten
Hallo,
Klappt leider doch noch nicht ganz. Er reduziert mir die Werte nicht richtig. Bei der ersten Datei geht es, aber danach bekomme ich nur den ersten und letzten Wert. Dabei sind die anderen Dateien von der Uhrzeit viel länger.

AW: VBA Spalten an hand von Uhrzeiten reduzieren
08.05.2014 15:36:19
Uhrzeiten
Hallo Ines,
das kann ich ohne Beispieldaten nicht klären.
Kannst du mal eine ZIP-Datei hochladen mit 2 Beispieldateien (Werte müssen nur in Spalten A und E(Vergleichsspalte) stehen) und den Ergebnisdateien mit reduzierten Daten bei einem bestimmten Vergleichswert.
Dann kann ich testen, wo das Problem liegt. Bei meinen bisherigen Tests mit nur 5 bis Testzeilen hat es scheinbar korrekt funktioniert
Gruß
Franz

Anzeige
AW: VBA Spalten an hand von Uhrzeiten reduzieren
13.05.2014 09:01:02
Uhrzeiten
Ich habe die Datei mal gezippt. In den ersten Tabellenblättern sind die "Ganzen" Daten, im Tabellenblatt Zusammenfassung dann die reduzierten. Ich habe jetzt alle um 0,01 reduziert. Paßt nicht ganz zu einer Minute, aber erstmal besser wie nichts. Kann man auch eine Begrenzung einbauen, sodass es automatisch den Wert ermittelt, so dass jede Minute ausgegeben wird? Teilweise sind die Daten zeitlich sehr unterschiedlich.
Vielen Dank.
Gruß Ines
https://www.herber.de/bbs/user/90650.zip

AW: VBA Spalten an hand von Uhrzeiten reduzieren
13.05.2014 23:57:01
Uhrzeiten
Hallo Ines,
ich hab das Makro jetzt mal angepasst. Es wird:
- der Vorgabewert jetzt als Uhrzeit eingegeben - Umrechnung in Dezimal erfolgt im Makro
- der Vorgabewert in der Inputput-Box ist jetzt 00:01:00
- bei Vorgabe von 1 Minute werden möglichst die Zeilen mit vollen Minuten kopiert.
- die reduzierte Liste wird jetzt in einem Zusammenfassungsblatt ausgegeben.
- nach dem Kopieren wird in Spalte D ein Zeitformat eingestellt und in Splate C werden die Datumswerte TT/MM/JJJJ in ein Exceldatum umgewandelt.
Gruß
Franz
Textdatei mit Neuem Code:
https://www.herber.de/bbs/user/90664.txt

Anzeige
AW: VBA Spalten an hand von Uhrzeiten reduzieren
14.05.2014 09:20:23
Uhrzeiten
Hat geklappt. Super.
Vielen Dank.
Gruß Ines

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige