Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

eingelesene Diagramdaten in einem XY-Diagramm darstellen





Frage

Hallo liebe Profi's. Ich hab ein mittelschweres Problem mit Excel 2003 / VBA6 und ich weiß einfach nicht mehr weiter. Ich hoffe ihr könnt mir helfen ... Fangen wir von vorne an. Jeden Tag bekomme ich in etwa 100 Messdaten in jeweils einer Exceldatei. Eine Datei besitzt dabei immer den gleichen Aufbau. Am Anfang steht immer unwichtiges Zeug und die wichtigen Daten beginnen ab B77 und hören bei C200 auf. Es handelt sich dabei um XY Werte, die eine einzelne Kurve bilden. Um alle Daten in eine Excel zu laden benutze ich folgenden Code. [code] Public Sub EinlesenDaten() Dim intFilecount As Integer Dim strFileName As String Dim objSheet As Worksheet Application.ScreenUpdating = False Set objSheet = ThisWorkbook.Worksheet With Application.FileSearch .NewSearch .LookIn = "C:\testordner\daten" .FileType = msoFileTypeExcelWorkbooks .Execute For intFilecount = 1 To .FoundFiles.Count strFileName = Dir$(.FoundFiles.Item(intFilecount)) GetObject (.FoundFiles.Item(intFilecount)) With Workbooks(strFileName).Worksheets(1) .Range("B77:C200").Copy _ objSheet.Cells(objSheet.Rows.Count, 1). _ End(xlUp).Offset(1) End With Workbooks(strFileName).Close SaveChanges:=False Next End With With Application .CutCopyMode = False .ScreenUpdating = True End With End Sub [/quote] Das klappt soweit ganz gut. Es werden alle wichtigen Daten untereinander eingelesen". Nun möchte ich alle Daten in einem XY Diagramm einlesen um möglich Vorgänge zu erkennen. Wichtig ist dabei das die einzelenen Kurven (1 Kurve ist 1 Datei mit ihren unterschiedlichen Messwerten) alle in dieses Diagramm eingelesen werden. Um es etwas verständlicher zu sagen bzw. zu zeigen werd ich mal den Aufbau der Gesamtdatei aufzeigen. [code] Zeile X Y 1 1 2 'Beginn Messdaten Kurve 1 2 2 5,6 . . . 20 0,000 14,03 'Ende Messdaten kurve 1 21 1 2,394 'Beginn Messdaten Kurve 2 . . . 30 0,000 15.34 ' Ende Messdaten Kurve 2 . . usw [/code] Das Ende einer Messreihe ist dann gegegeben wenn der X- wert = 0 ist. Es soll also von 1 zu 20 alle Daten in das Diagramm als eine Kurve eintragen und bei 21 zu 30 eine neue Kurve eintragen. Mit wenig Datenreihen wäre dies ja kein Problem aber bei 100 kann man keinen Makrorecorder anwenden. Könnt ihr mir irgendwie helfen? Ihr seit meine letzte Hoffnung. Habt vielen Dank im Vorraus. P.S. Wenn ihr etwas nicht verstehen solltet oder ich unverständlich geschrieben habe, liegt das sicher daran das ich mir die ganze Nacht um die Ohren schlage um dieses Problem zu lösen.

Antwort 1 von Primut

Hi,
nur eine ganz kleine Nebenbei-Antwort, weil mir die Zeit für eine komplette Lösung fehlt:

Zitat:
Mit wenig Datenreihen wäre dies ja kein Problem aber bei 100 kann man keinen Makrorecorder anwenden.

Warum???
Du kannst doch beispielsweise den Makrorekorder nur für den ersten Datensatz benutzen und dann das Makro entsprechend erweitern, nämlich das Makro in einer Schleife wo entsprechend hochgezählt wird, mit den richtigen variablen Bezügen wiederholen lassen.

Gruß
    Primut


Antwort 2 von FTWilli

Zitat:

Du kannst doch beispielsweise den Makrorekorder nur für den ersten Datensatz benutzen und dann das Makro entsprechend erweitern, nämlich das Makro in einer Schleife wo entsprechend hochgezählt wird, mit den richtigen variablen Bezügen wiederholen lassen.


Naja - entweder es ist zu spät oder ich stelle mich gerade zu blöde an ...

Könntest du mir, wenn du die dafür Zeit hast, mal deinen Lösungsansatz schicken???
Bei mir kommt dann immer ein unbekannter Lauffehler raus!!! (Und die Zeilen sind nicht verbunden!!)

Antwort 3 von Primut

Also ich hoffe, das bekommt auch ein anderer hin, mir fehlt wie schon erwähnt die Zeit.

Für ein komplettes Makro fehlen aber dann noch ganz konkrete Daten, wie beispielsweise von wo nach wo soll nach welchem System wohin eingelesen werden, wieviel Datenreihen etc.....

Viel Erfolg

    Primut


Antwort 4 von Beverly

Hi Willi,

ich weiß nicht, ob ich das Problem richtig verstanden habe, aber versuche es mal so
Sub diagramm()
    Dim loZeile As Long
    Dim chDiagramm As Chart
    Dim strStart As String
    Dim strEnde As String
    Set chDiagramm = ActiveSheet.ChartObjects(1).Chart
    With chDiagramm
        .SetSourceData Source:=Range("IV1")
        strStart = "B77"
        For loZeile = 77 To 200
            If Cells(loZeile, 3) = 0 Then
                strEnde = "B" & loZeile
                .SeriesCollection.NewSeries
                With .SeriesCollection(.SeriesCollection.Count)
                    .XValues = Range(strStart & ":" & strEnde)
                    .Values = Range(strStart & ":" & strEnde).Offset(0, 1)
                End With
                strStart = "B" & loZeile + 1
            End If
        Next loZeile
    End With
End Sub

Bis später,
Karin

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: