Anzeige
Archiv - Navigation
1368to1372
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

Eingrenzung des Bereichs der Bedingung/ Format

Eingrenzung des Bereichs der Bedingung/ Format
08.07.2014 15:27:36
Sabine

Hallo,
ich möchte eine automatische Auswertung realisieren. Hierbei habe ich in einer Spalte eine Zeitangabe (hh:mm:ss:ms). In einer weiteren Spalte habe ich verschiedene Kategorien eingetragen. Nun möchte ich die Häufigkeit der Kategorien in einem bestimmten Zeitbereich zählen lassen. Mit der ZÄHLENWENN-Funktion kann ich ja die Häufigkeit zählen. Aber nun muss ich ja noch den Bereich automatisch begrenzen. Also nur die Zeilen, die bspw. zwischen 00:00:00:00-00:01:59:29 liegen. Da die Anzahl der Zeilen für die jeweiligen Zeiten variieren kann ich sie nicht direkt festlegen. Hinzu kommt noch das Problem, dass ich die Daten aus einem anderen Programm kopiere. Dieses hat aber das Format mit :ms was es in Excel nicht gibt. Leider schaffe ich es aber auch nicht das benutzerdefinierte Format so einzurichten, dass er damit rechnen kann (falls das überhaupt erforderlich ist für die oben genannte Funktion). Überall manuell ein , vor die ms zu machen wäre aber zu aufwendig (es sind über 10000 Zeilen). Und : ersetzen kann ich ja auch nicht machen, da ich ja dann überall ein , habe.
Habe zwar VBA noch nicht benutzt würde dies aber auch versuchen, wenn es nicht anders geht.
Vielen Dank schonmal für eure Hilfe
Sabine

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
08.07.2014 15:34:37
Hajo_Zi
Hallo Sabine,
=SUMMENPRODUKT(((LINKS(A1:A12;8)&","&RECHTS(A1:A12;2))*1>="00:01:59,32"*1)*((LINKS(A1:A12;8) &","&RECHTS(A1:A12;2))*1<="00:01:59,36"*1))

AW: Eingrenzung des Bereichs der Bedingung/ Format
08.07.2014 15:52:05
Sabine
Hallo Hajo_Zi,
danke für die schnelle Antwort. Leider verstehe ich nicht ganz was du mir damit sagen möchtest. (vielleicht sollte ich meine Einschätzung der Excelkenntnisse noch weiter runter stufen??)
Wie auch immer.
Wozu rechnet du die Summe eines Arrays aus? Mit A1:A12 meinst du die maximale Anzahl der Einträge/Zeilen (mit Zeit und Kategorie)? Und trotzdem habe ich ja das Problem, dass mein Millisekunden Format nach einem : folgt und nicht machen einem , wie üblich.
Liebe Grüeß
Sabine

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
08.07.2014 16:01:07
Hajo_Zi
Hallo Sabine,
ich rechne nur die Anzahl aus. Summe muss da noch hin *(B1:B12)
Du hast in Deinem Beitrag Extra keine Datei verlink bzw. einen Tabellen Ausschnitt (nicht als Bild) dargestellt. Da Du die vorgeschlagene Lösung selbst auf Deine Bedingungen anpassen wollest.
Gruß Hajo

AW: Eingrenzung des Bereichs der Bedingung/ Format
08.07.2014 16:34:01
fcs
Hallo Sabine,
hier ein Makro zur Konvertierung des Textes in eine Excel-Zahl.
Zur Auswertung kannst dann die von HaJo vorgeschlagene Funktion SUMMENPRODUKT nehmen oder auch in den neueren Excelversionen mit ZÄHLENWENNS arbeiten.
Gruß
Franz
'makro in einem allgemeinen Modul - z.B der in der persönlichen Makro Arbeitsmappe
Sub Zeittext_konvertieren()
'Zeittext hh:mm:ss:ms umwandeln in Excelzeit hh:mm:ss,000
Dim wks As Worksheet
Dim Zelle As Range, varZeit As Variant, varMS, Spalte As Long
Set wks = ActiveSheet
Spalte = 1 ' Spalte A - Nummer der Spalte ggf. anpassen
With wks
'in folgender Zeile die Startzeile 2 ggf. anpassen
.Columns(Spalte).NumberFormat = "hh:mm:ss.000"
For Each Zelle In .Range(.Cells(2, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp))
varZeit = Zelle.Text
varMS = Mid(varZeit, InStrRev(varZeit, ":") + 1)
varZeit = Left(varZeit, 8)
Zelle.Value = CDbl(CDate(varZeit)) + Val(varMS) / 1000 / 24 / 3600
Next
End With
End Sub

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
08.07.2014 23:00:18
Sabine
Hallo ihr beiden,
danke für die Antworten.
@Franz ich habe das Makro eingebaut. Es formatiert die Daten schonmal gut um. Vielen Dank dafür. Allerding macht es aus 2 Stellen für ms 3 Stellen. Kann man das noch ändern?
Alles weiter werde ich dann morgen mal ausprobieren.
Ich lade mal die Probedatei hoch. In der zweite Tabelle habe ich die Auswertung. In Spalte B habe ich bisher die Auszählung aller Kategorien über die komplette Zeit. Eigentlich soll die Kategorie in Spalte B nur von 0-1:59 Minuten gezählt werden und in der Spalte C dann 2-3:59 minuten usw...
https://www.herber.de/bbs/user/91416.xlsm
Viele Grüße
Sabine

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
08.07.2014 23:01:04
Sabine
Hallo ihr beiden,
danke für die Antworten.
@Franz ich habe das Makro eingebaut. Es formatiert die Daten schonmal gut um. Vielen Dank dafür. Allerding macht es aus 2 Stellen für ms 3 Stellen. Kann man das noch ändern?
Alles weiter werde ich dann morgen mal ausprobieren.
Ich lade mal die Probedatei hoch. In der zweite Tabelle habe ich die Auswertung. In Spalte B habe ich bisher die Auszählung aller Kategorien über die komplette Zeit. Eigentlich soll die Kategorie in Spalte B nur von 0-1:59 Minuten gezählt werden und in der Spalte C dann 2-3:59 minuten usw...
https://www.herber.de/bbs/user/91416.xlsm
Viele Grüße
Sabine

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
09.07.2014 11:13:00
fcs
Hallo Sabine,
ich hab in deiner Datei mal entsprechende Auswerte-Formeln ergänzt.
https://www.herber.de/bbs/user/91430.xlsm
Bei mehreren 10000 oder auch 100000 Zeilen wird das Ganze sehr rechenintensiv und auch das Makro wird ggf. lange für die Ausführung benötigen.
Ich hab deshalb Varianten eingebaut. Im Blatt "Intervalle" werden für 24 Stunden die Zeitintervalle und in 2 weiteren Spalten Werte für die Intervalle. Ich empfehle für die Auswertungen bei den Intervallen nur die Startminute zu benutzen und nicht die von-bis Werte. Das ist insgesamt einfacher.
Im Blatt "Interact Daten" sind in Spalte F zusätzlich die Intervalle eingetragen. Diese können mit dem 2. Makro eingetragen werden; dieses Makro fügt eine entsprechende SVERWEIS-Formel ein und ersetzt dann die Formeln durch ihre Werte.
So kann man die Daten auch per Pivot-Tabellenbericht auswerten, was dann ohne rechenintensive Formeln erfolgt.
Das Makro zur Konvertierung der Zeit-Texte hab ich angepasst. Es werden nur noch 2 Nachkommastellen der Sekundenbruchteile angezeigt (via Formatierung) und die Spalte C wird auch in eine Excel-Zeit umgewandelt. Zusätzlich sind Anweisungen eingefügt, die vorübergehend die Bildschirmaktualisierung deaktivieren und den Berechnungsmodus auf manuell setzen, um die Makroausführung zu beschleunigen.
Gruß
Franz

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
09.07.2014 12:25:02
Sabine
Hallo Franz,
ja das ist ja ziemlich cool! Danke schön... Ich hab schon lauter Knoten in meinen Gehirnwindungen :-).
Mit der Anzahl der Zeilen habe ich mich wohl nicht ausreichend ausgedrückt. Ich habe ca. 50Datensätze (tendenz steigen) mit 200 bis max. 500 Zeilen. Ich komme also zusammen auf über 10000 Zeilen bzw. fast 15000.
Ich habe noch eine extra Funktion gebastelt, mit der ich Fehler in den Zeiten herrausfinden kann (die funktioniert nur nach Ausführung des Makros). Ein Fehler ist, wenn die nächste Zeile nicht eine ms nach Ende der vorherigen beginnt. Dafür ist es aber wichtig, dass in Spalte C die Endzeitpunkte erhalten bleiben (also z.B. C5 nicht gleich B6 wird). Ist es auch möglich, die neu berechneten Daten in Tabelle 3 zu schreiben, damit meine Orginaldaten erhalten bleiben und ich damit trotzdem rechnen kann? Außerdem ist mir aufgefallen, dass bei den ms "nur" die 3te Stelle abgeschnitten ist, also die Daten der letzten Stelle verlohren gehen. Falls das nicht anders geht, bleibe ich liebe bei 3 Stellen (sonst kann ich ja auch die Fehler in den Zeiten nicht finden).
Dann habe ich noch ein weiteres Problem. Bei dem Programm, aus dem ich die Daten habe, gibt es maximal 29ms. Danach fängt die nächste ss an. Leider werden diese Zeilen trotzdem als Fehler angezeigt. Ich habe auch schon überlegt was ich machen könnte, bei der RECHTS Funktion bekomme ich aber bei 29 eine 04 zurück gegeben, kann das also nicht als Bedingung nehmen und den Fehler abzufangen.
Nachdem ich die SUMMENPRODUKT-Fuktion endlich verstanden hatte, habe ich auch versucht sie auf die neu berechneten Daten anzuwenden. Witzgerweise funktioniert die einfache Formel genauso mit meinen alten orginalen Daten wie die Komplizierte (siehe Spalte J). Nur mit den neu berechneten Daten funktioniert die einfache Formel nicht. Aber das ist ja nun dank deiner Berechnung auch nicht mehr wichtig, aber vielleicht interessant.
https://www.herber.de/bbs/user/91431.xlsm
Liebe Grüße
Sabine

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
09.07.2014 16:26:03
fcs
Hallo Sabine,
wenn pro Datenblatt (=1 Arbeitsmappe ?) max. 500 Zeilen auszuwerten sind , dann sollte es keine Probleme bzgl. Rechenzeiten/Makrolaufzeiten geben.
Fehler in den Zeiten
Leider kommt man hier an die Grenzen der Rechengenauigkeit von Excel, wenn man mit den Uhrzeiten direkt rechnet. Die Funktion RECHTS funktioniert mit den konvertierten Zeiten nicht - hier müsstets du auf die Originaldaten zurgreifen, um die letzten 2 Zeichen zu prüfen. Ist aber alles sehr mühselig.
Ich hab in Tabelle3 mal einen Umweg über die Zeiten als Dezimalwerte eingebaut.
In Tabelle3 werden jetzt die umgewandelten Uhrzeiten mit 2 Nachkommastellen und als Dezimalwerte eingetragen, die Kategorien werden hineinkopiert, die Formeln für Zeitdifferenzen (Entry-Exit von aufeinander folgenden Zeilen), Formel für "Fehler in Zeiten", und die Intervalle.
Im Blatt "Auszählung" werden die Daten im Blatt "Tabelle3" per Pivotbericht ausgewertet. Hier ist auch eine Schaltfläche, die die die komplette Datenaufbereitung startet und den Pivot-Bericht aktualisiert.
Du musst jetzt noch prüfen, ob du die Tabelle "Interact Daten" noch benötigst oder "Tabelle3" umbenennst (auch im Code !!)
Gruß
Franz
https://www.herber.de/bbs/user/91448.xlsm

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
09.07.2014 18:07:36
Sabine
Hallo Franz,
wow, vielen Dank für deine ganze Mühe und Zeit. Das ist ja echt viel geworden. Dementsprechend bin ich gerade etwas überwältigt. Ich brauch sicher erstmal eine Weile bis ich das verstanden habe.
Ich würde für jeden Datensatz eine neue Datei anfangen. So wird die Berechnungszeit sicher kein Problem sein.
Beim ersten Testen ist mir aufgefallen, dass wenn ich andere Daten reinkopiere, die Kategorien nicht gefunden werden. Wenn ich dann die vorherigen Daten wieder benutze, dann geht es auch nicht. Aber die anderen (neuen) Zeiten werden richtig erkannt.
Hier mal die Datei mit anderen Daten, Makro habe ich noch nicht ausgeführt.
https://www.herber.de/bbs/user/91450.xlsm
Liebe Grüße
Sabine

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
10.07.2014 09:28:27
fcs
Hallo Sabine,
da ist leider irgendwann mal der Spaltentitel "Kategorien" statt "Kategorie" in die Spalte E der Originaldaten geraten.
Ziehe im Blatt "Auszählung" in der Feldliste der Pivot-Tabelle das Feld "Kategorie" in den Bereich "Zeilenbeschriftung" und in den Bereich "Werte". Dann ist die Auswertung wieder komplett.
Ergänze zusätzlich die neue Zeile in dem folgenden Makro, dann ist der Spaltentitel in Spalte E von Tabelle 3 unabhängig vom Eintrag in den Originaldaten.
Gruß
Franz
Sub Formeln_und_Daten()
'restliche Daten kopieren und Formeln einfügen
Dim wks_Q As Worksheet, wks_Z As Worksheet
Dim Zelle As Range, varZeit As Variant, varMS, Spalte As Long, StatusCalc As Long
Set wks_Q = ActiveWorkbook.Worksheets("Orginal Daten")
Set wks_Z = ActiveWorkbook.Worksheets("Tabelle3")
Spalte = 2 ' Spalte B - Nummer der Spalte ggf. anpassen
'Makrobremsen lösen
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With wks_Z
.Cells(1, 4).Value = "leer"
.Cells(1, 5).Value = "Kategorie"           'neue Zeile 2014-07-10
.Cells(1, 6).Value = "Intervall"
.Cells(1, 7).Value = "Fehler in der Zeit"
.Cells(1, 8).Value = "leer2"
.Cells(1, 9).Value = "Entry-dezimal"
.Cells(1, 10).Value = "Exit-dezimal"
.Cells(1, 11).Value = "Delta-Dezimal"
End With
With wks_Q
'Spalte E (Kategorien) von Original nach Tabelle 3 kopieren
.Range(.Cells(2, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 3).Copy _
wks_Z.Cells(2, 5)
End With
With wks_Z
'Zeitdiferenzen dezimal in Spalte K
'=RUNDEN(I3-J2;9)
With .Range(.Cells(3, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 9)
.FormulaR1C1 = "=ROUND(RC[-2]-R[-1]C[-1],9)"
'      .Calculate
'      .Value = .Value
End With
'Formel für Zeitvergleich in Spalte G einfügen
'=WENN(K2=0;"Gleiche Zeiten";WENN(ODER(K2 = 0,000000116;K2 = 0,000008218);"OK";"Fehler")))
'0.000000116 = 0,01 Sekunden
'0.000008218 = Exit endet auf :29, Entry endet auf :00
With .Range(.Cells(2, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 5)
.FormulaR1C1 = "=IF(RC11=0,""Gleiche Zeiten"",IF(OR(RC11 = 0.000000116," _
& "RC11 = 0.000008218),""OK"",""Fehler""))"
'      .Calculate
'      .Value = .Value
End With
End With
'Makrobremsen zurücksetzen
With Application
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Eingrenzung des Bereichs der Bedingung/ Format
10.07.2014 10:32:10
Sabine
Hallo Franz,
Klingt logisch, dass wenn der Name ändert die Tabelle es nicht mehr richtig erkennt. Jetzt klappt alles problemlos. Nun muss ich auch die Kategorien nicht mehr extra einschalten.
Bin ich wunschlos glücklich! Danke nochmal für alles :-).
Liebe Grüße
Sabine

AW: Eingrenzung des Bereichs der Bedingung/ Format
11.07.2014 12:19:46
Sabine
Hallo,
ich habe doch nochmal ne Frage. Und zwar habe ich die Zeile mit den berechneten Fehlerzeiten wieder in die orginale Tabelle zurück kopiert (ganz unten), damit ich nicht immer Tabellenhopping machen muss. Denn die korrigiere ich dort und kopiere sie zurück ins orginal Programm. Allerdings ist die Anzeige weg, wenn ich die Datei speichere, da ich ja die Formel kopiere und nicht die Daten. Ich habe es auch schon mit PasteSpecial probiert. Aber es wird immer ein Fehler angezeigt und ich hab keinen Plan warum.
Danke schonmal!
With wks_Z
'Zeitdifferenzen dezimal in Spalte K
'=RUNDEN(I3-J2;9)
With .Range(.Cells(3, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 9)
.FormulaR1C1 = "=ROUND(RC[-2]-R[-1]C[-1],9)"
' .Calculate
' .Value = .Value
End With
'Formel für Zeitvergleich in Spalte G einfügen
'=WENN(K2=0;"Gleiche Zeiten";WENN(ODER(K2 = 0,000000116;K2 = 0,000008218);"OK";"Fehler")))
'0.000000116 = 0,01 Sekunden
'0.000008218 = Exit endet auf :29, Entry endet auf :00
With .Range(.Cells(2, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 5)
.FormulaR1C1 = "=IF(RC11=0,""Gleiche Zeiten"",IF(OR(RC11 = 0.000000116," _
& "RC11 = 0.000008218),""OK"",""Fehler""))"
' .Calculate
' .Value = .Value
End With
Spalte = 7
'Spalte G (Fehler Zeiten) von Tabelle Berechnungen nach Original kopieren
.Range(.Cells(2, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Copy _
wks_Q.Cells(2, 7)
End With

AW: Eingrenzung des Bereichs der Bedingung/ Format
11.07.2014 13:47:16
fcs
Hallo Sabine,
mit PasteSpecial sollte es funktionieren, dass die Formelergebnisse ins Originalblatt kopiert werden.
"Einfach" kopieren funktioniert nicht, da die kopierten Formeln
Gruß
Franz
  With wks_Z
'Zeitdiferenzen dezimal in Spalte K
'=RUNDEN(I3-J2;9)
With .Range(.Cells(3, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 9)
.FormulaR1C1 = "=ROUND(RC[-2]-R[-1]C[-1],9)"
'      .Calculate
'      .Value = .Value
End With
'Formel für Zeitvergleich in Spalte G einfügen
'=WENN(K2=0;"Gleiche Zeiten";WENN(ODER(K2 = 0,000000116;K2 = 0,000008218);"OK";"Fehler")))
'0.000000116 = 0,01 Sekunden
'0.000008218 = Exit endet auf :29, Entry endet auf :00
With .Range(.Cells(2, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 5)
.FormulaR1C1 = "=IF(RC11=0,""Gleiche Zeiten"",IF(OR(RC11 = 0.000000116," _
& "RC11 = 0.000008218),""OK"",""Fehler""))"
.Calculate  'wichtig, damit Neu-Berechnung der Formeln vor dem Kopieren abgeschlossen ist
'      .Value = .Value
End With
'berechnete Werte (Fehler in Zeit) aus Spalte G nach Quelltabelle Spalte G kopieren.
Spalte = 7
.Range(.Cells(1, Spalte), .Cells(.Rows.Count, Spalte)).Copy
wks_Q.Cells(1, 7).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
Alternativ kann man mit angepassten Formeln (Tabellenblatt in Formel mit eingebaut) auch direkt die Spalte G ins Quellblatt zurückkopieren.
  With wks_Z
'Zeitdiferenzen dezimal in Spalte K
'=RUNDEN(I3-J2;9)
With .Range(.Cells(3, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 9)
.FormulaR1C1 = "=ROUND(RC[-2]-R[-1]C[-1],9)"
'      .Calculate
'      .Value = .Value
End With
'Formel für Zeitvergleich in Spalte G einfügen
'=WENN(K2=0;"Gleiche Zeiten";WENN(ODER(K2 = 0,000000116;K2 = 0,000008218);"OK";"Fehler")))
'0.000000116 = 0,01 Sekunden
'0.000008218 = Exit endet auf :29, Entry endet auf :00
With .Range(.Cells(2, Spalte), .Cells(.Rows.Count, Spalte).End(xlUp)).Offset(0, 5)
.FormulaR1C1 = "=IF('" & wks_Z.Name & "'!RC11=0,""Gleiche Zeiten""," _
& "IF(OR('" & wks_Z.Name & "'!RC11 = 0.000000116,'" & wks_Z.Name & "'!RC11 " _
& "= 0.000008218),""OK"",""Fehler""))"
'      .Calculate
'      .Value = .Value
End With
'Formeln (Fehler in Zeit) aus Spalte G nach Quelltabelle Spalte G kopieren.
Spalte = 7
.Range(.Cells(1, Spalte), .Cells(.Rows.Count, Spalte)).Copy wks_Q.Cells(1, 7)
End With

AW: Eingrenzung des Bereichs der Bedingung/ Format
11.07.2014 16:49:20
Sabine
Hallo Franz,
vielen Dank mal wieder :-). Überschrift mit kopieren ist auch super.
Wenn man keinen Ahnung hat funktionieren die einfachsten Sachen nicht. Vielleicht sollte ich mal klein Anfangen, dann wirds vielleicht besser mit dem Grundverständnis :-).
Liebe Grüße
Sabine

AW: Eingrenzung des Bereichs der Bedingung/ Format
11.07.2014 16:50:29
Sabine
Hallo Franz,
vielen Dank mal wieder :-). Überschrift mit kopieren ist auch super.
Wenn man keinen Ahnung hat funktionieren die einfachsten Sachen nicht. Vielleicht sollte ich mal klein Anfangen, dann wirds vielleicht besser mit dem Grundverständnis :-).
Liebe Grüße
Sabine

AW: Eingrenzung des Bereichs der Bedingung/ Format
09.07.2014 15:10:08
Sabine
Hallo,
ich habe nochmal die deine Datei mit meinen Sachen ergänzt (also das Anzeigen der Fehler) und wieder die Ausgabe der ms mit 3 Stellen nach dem Komma gemacht.
https://www.herber.de/bbs/user/91440.xlsm
Liebe Grüße
Sabine

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige