Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kniffliges Zählerproblem

Kniffliges Zählerproblem
04.06.2008 16:06:59
christian
Hallo,
ich habe folgende Aufgabe:
Die Drehzahl eines Motors wird tageweise (einzelne Excel-Dateien) und innerhalb dieser Datei im Abstand von zehn sekunden registriert.
Der Motor wurde seit Dezember mehrmals am Tag manuell gestartet. Jetzt möchte man wissen, wieviel Startvorgänge der Motor seitdem ausgeführt hat.
(Die einzelnen Excel-Dateien (ca. 100) liegen in einem Ordner)
Ich habe mir folgendes überlegt:
Er soll immer dann wenn der Wert in der Spalte für die Drehzahl (im vergleich zum vorwert) über 1000 steigt, dass als einen Startvorgang zählen.
z.B.
867
945
1100 (hier als einen Startvorgang zählen)
1190
(Es ist aber durchaus möglich das z.B. 3 Startvorgänge an einem Tag stattgefunden haben, also demnach die Drehzahl jeweils 3mal über 1000 stieg und dann oberhalb für eine bestimmte Zeit anhielt)
Kann man sowas mit VBA?
christian
PS: ich mache gerne noch weitere erläuterungen.

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kniffliges Zählerproblem
04.06.2008 16:11:47
Andi
Hi,
wenn die Drehzahlen in Spalte A stehen, dann so:

Sub t()
Dim c As Range
Dim zaehler As Long
For Each c In Range("A2:A" & Range("A65536").End(xlUp).Row)
If c.Value > 1000 And c.Offset(-1, 0).Value 


Schönen Gruß,
Andi

AW: Kniffliges Zählerproblem
04.06.2008 16:26:00
christian
Ich muss es besser erklären.
Es liegen 100 Excel Dateien in einem Ordner. Der Code soll nun (quasi auf jede Excel-Datei zugreifen) und in ihr die Spalte nach diesem Kriterium prüfen.
Also in jede Datei "schauen" wieviel startvorgänge sind es dort und mir am ende eine Summe aller Starts ausgeben.
Also müsste man ihm am Anfang ja wahrscheinlich sagen in welchem Verzeichnis die zu prüfenden dateien überhaupt lagern, oder?
christian

Anzeige
AW: Kniffliges Zählerproblem
04.06.2008 17:03:03
Erich
Hallo Christian,
ja, das Verzeichnis muss natürlich bekannt sein (fest im Makro oder per InputBox-Eingabe ?).
Aber das reicht nicht aus. Es kommt auch darauf an, in welcher Reihenfolge die Dateien verarbeitet werden.
Ein Beispiel:
 ABCDEFG
1867Datei13 867Datei14
2945Datei1  945Datei1 
31000Datei1  1000Datei1 
41190Datei1  1190Datei1 
520Datei1  20Datei1 
6600Datei1  600Datei1 
71010Datei2  1050Datei3 
8123Datei2  50Datei3 
9999Datei2  1010Datei2 
101030Datei2  123Datei2 
111050Datei3  999Datei2 
1250Datei3  1030Datei2 

Formeln der Tabelle
ZelleFormel
C1=SUMMENPRODUKT((A1:A11<=1000)*(A2:A12>1000))
G1=SUMMENPRODUKT((E1:E11<=1000)*(E2:E12>1000))

Im linken Teil gibt es 3 Startvorgänge, einen davon beim Übergang von Datei1 zu Datei 2.
Im rechten Teil gibt es 4 Startvorgänge, zwei davon bei den beiden Dateiübergängen.
Geändert ist nur die Reihenfolge der Dateien, die Daten sind identisch.
Also:
Ist die Reihenfolge, in der die Dateien entstanden sind, am Dateinamen erkennbar,
oder müsste ein Makro die Dateien nach dem Zeitpunkt der letzten Änderung (oder der Erstellzeit)
sortieren?
(Im Beispiel ist auch eine Formel, mit der du die Anzahl (INNERHALB einer Datei) berechnet werden kannst.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Kniffliges Zählerproblem
05.06.2008 08:31:00
christian
Danke Erich für dein Beispiel, das trifft genau meine Aufgabe.
Die Eingabe des Verzeichnisses würde ich per Input-Box bevorzugen (da das ganze nicht nur von mir benutzt werden soll).
Die Reihenfolge der Abarbeitung soll chronologisch erfolgen.
Die Dateinamen sind nach einem Schema mit Jahr, Monat, Tag und text aufgebaut allerdings ist das nicht immer korrekt gelaufen, sodass ich lieber nach dem Erstelldatum vorgehen möchte.
Das mit dem Zählen der Startvorgänge innerhalb einer Datei wäre auch ein guter Zusatz, so könnte man später Rückschlüsse ziehen.
Schon mal danke im voraus.
christian

Anzeige
AW: Kniffliges Zählerproblem
06.06.2008 08:00:04
Erich
Hallo Christian,
probier mal diese Mappe aus. Das Verzeichnis wird in Zelle B2 eingegeben:
https://www.herber.de/bbs/user/52871.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Kniffliges Zählerproblem
06.06.2008 09:38:51
christian
Hallo,
ich habe das Verzeichnis in Zelle B2 eingetragen. Ich habs auch gestartet ohne das er mir was ausgegeben hat.
Die Drehzahl steht bei mir in D3 bis D8644.
Was müsste ich im Code alles anpassen?
(meine Kenntnisse sind leider, wie mein Level zeigt, äußerst dürftig.)
christian

AW: Kniffliges Zählerproblem
06.06.2008 14:04:00
Erich
Hi Christian,
hier eine neue Version, mit 2 Überschriftzeilen und Drehzahl in Spalte D,
dazu ein wenig mehr Fehlermeldungen:

Die Datei https://www.herber.de/bbs/user/52883.xls wurde aus Datenschutzgründen gelöscht


Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Kniffliges Zählerproblem
06.06.2008 14:12:44
christian
Schonmal danke. Aus zeitmangel kann ich es leider erst nächste Woche ausprobieren.
Ich verabschiede mich ins Wochenende.
Montag bin ich wieder im Forum
christian

@ Erich; funzt leider noch nicht ...
09.06.2008 09:41:00
christian
Hallo Erich,
ich habe es gerade mal laufen lassen. Die Reihenfolge in der Abarbeitung stimmt. Nur leider kommt immer die Fehlermeldung: Laufzeitfehler '1004' Die Methode 'Range' für das Objeckt '_Global' ist fehlgeschlagen
die erzeugte Tabelle hab ich hier angehängt.
https://www.herber.de/bbs/user/52940.xls
Was vielleicht noch wichtig wäre:
Die Daten in dieser (und auch allen weiteren Spalten) sind mal Text gewesen. Ich habe sie mithilfe eines Makros in Zahlenwerte umgewandelt. Hat das irgendeinen Einfluss?
(kann die Quelldateien leider nicht anhängen, da die Größe ca. 4-12 MB beträgt.)
christian

Anzeige
AW: Wo ist der Fehler?
09.06.2008 18:39:15
Erich
Hi Christian,
kannst du mir vielleicht noch schreiben, in welcher Zeile dieser Fehler 1004 auftritt?
Vermutlich ist das in der Fkt. "ZaehleStarts", oder?
(Ich geh mal davon aus, dass im Fehlerfall der VBA-Editor aufgeht und dort die fehlerhafte Zeile markiert ist.)
Vielleicht könntest du auch noch eine kleine (und anonymisierte) Quelldatei hochladen,
bei der der Fehler auftritt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Wo ist der Fehler?
10.06.2008 09:06:16
christian
Hallo,
genau in "Zaehlestarts" und mit dieser Zeile scheint es ein Problem zu geben:

lngS = Range(strSp & "1").Column


Vielleicht ist das schon der ganze fehler, ansonsten versuche ich nochmal eine Datei "kleinzukriegen" (betreffs Dateigröße).
christian

Anzeige
AW: Wo ist der Fehler?
10.06.2008 12:11:00
Erich
Hallo Christian,
ganz oben in der ersten Prozedur (ca. 6. Zeile) steht
strSpalte = "D"
Steht da jetzt bei dir etwas anderes zu strSpalte?
Wenn der Fehler auftritt, ist eine Quelldatei offen. Wie sieht da das aktive Blatt aus?
Haben die Quellmappen eventuell mehrere Blätter, vielleicht auch Diagrammblätter?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Wo ist der Fehler?
10.06.2008 13:04:14
christian
hallo,
  • nein, daran ist keine Veränderung vorgenommen worden. Es steht nach wie vor "D" dort.

  • Ja, die Dateien besitzen ein Tabellenblatt (in welchem die Daten stehen) und 2 Diagramme.

  • christian

    Anzeige
    AW: Wo ist der Fehler?
    10.06.2008 13:24:00
    Erich
    Hi Christian,
    vermutlich entsteht der Fehler, weil nach dem Öffnen der Quellmappe (zufällig) ein Diagrammblatt aktiv ist.
    Der Fehler dürfte beseitigt sein, wenn du in der Fkt. ZaehleStarts direkt unter der Zeile
    Workbooks.Open strFile, 0, True
    eine neue Zeile einfügst und
    Worksheets(1).Select
    da hineinkopierst.
    Damit wird gleich nach dem Öffnen das erste Tabellenblatt der Mappe aktiviert.
    Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

    Es funktioniert ! ....
    10.06.2008 13:34:05
    christian
    Es funktioniert, ich hab auch noch mal die beispiele angeschaut, in denen er gezählt hat, alles bestens.
    Super, danke nochmal!
    Vielleicht kann ich auch noch mit einem sehr ähnlichen Problem (für mich) auf dich zurückkommen. Das wäre ein Betriebsstundenzähler anhand der Drehzahl, aber da muss ich nochmal schlau machen wegen den Zeitabständen der Datenaufzeichnung.
    grüße
    christian

    Anzeige
    AW: Kniffliges Zählerproblem
    04.06.2008 17:44:41
    Andi
    Hi,
    dann nach diesem Schema; Pfad, Name des Tabellenblattes in jeder Datei und die Spalte musst Du noch anpasen.
    
    Sub t()
    Dim c As Range
    Dim zaehler As Long
    Dim Dateiname As String
    Application.ScreenUpdating = False
    Dateiname = Dir("C:\Test\Drehzahl\*.xls")
    Do While Dateiname  ""
    Workbooks.Open ("C:\Test\Drehzahl\" & Dateiname)
    With Workbooks(Dateiname)
    For Each c In .Worksheets("Tabelle1").Range("A2:A" & .Worksheets("Tabelle1").Range("A65536"). _
    End(xlUp).Row)
    If c.Value > 1000 And c.Offset(-1, 0).Value 


    Schönen Gruß,
    Andi

    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige