Anzeige
Archiv - Navigation
1436to1440
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

Anfang und Ende des Datenfeldes speichert nicht

Anfang und Ende des Datenfeldes speichert nicht
28.07.2015 12:22:06
Larissa
Hallo Zusammen,
leider habe ich keinen ähnlichen Beitrag gefunden, der mir weiterhelfen konnnte.
Zuerst mein Code:

Dim letzte_zeile As Integer
Dim zeile_anf(0 To 1000) As Integer     '   dieses Datenfeld merkt sich den Anfang eines  _
Bereichs
Dim zeile_ende(0 To 1000) As Integer    '   dieses Datenfeld merkt sich das Ende eines Bereichs
Dim schalter As Integer, ende As Integer    '   Hilfsvariablen für for-Schleifen
Dim co1 As ChartObject, co2 As ChartObject, co3 As ChartObject  '   werden zur Erstellung der    _
_
_
Diagramme benötigt
Dim ch1 As Chart, ch2 As Chart, ch3 As Chart                    '   werden zur Erstellung der    _
_
_
Diagramme benötigt
Dim i As Integer    '   Laufvariable innerhalb des Datenfelds
Dim j As Integer    '   Laufvariable für Zeilen
'   ******************************************************************************************** _
_
_
'   hier erfolgt die Berechnung der Bereiche nach denen die ersten zwei Diagramme erstellt  _
werden
'   ******************************************************************************************** _
_
_
Sub Zellen_Zaehlen()
'   ACHTUNG:    Die ha_korr steht aktuell in Spalte 44 (AR) ! Darauf wird hier aufgebaut!
'               Sollte sich dies ändern müssen die folgenden Zeilen angepasst werden!
letzte_zeile = Cells(Rows.Count, 44).End(xlUp).Row
schalter = 0
i = 1
For j = 15 To letzte_zeile          '   Startzeile ist 15 (vgl. bei Unstimmigkeiten Blatt " _
Berechnung Wht")
If (Cells(j, 44) > 0 And Cells(j, 44)  "") And schalter = 0 Then
zeile_anf(i) = j            '   Beginn eines Bereichs wird hier gesetzt, z.B. 1.Bereich: _
_
_
Beginn bei Zeile 13
If Cells(j, 44)  "" Then
schalter = 1            '   schlater = 1 gesetzt, damit das Ende des Bereichs  _
ermittelt werden kann
End If
End If
If Cells(j + 1, 44) = "" Then   '   Hilfskonstruktion um die Funktion Abs in der nächsten    _
_
_
Abfrage
Cells(j + 1, 44) = 0        '   bilden zu können; mit leeren Zellen nicht möglich
End If
'   wenn die Abweichung der nächsten Zelle >= 0.5 ist (damit werden auch leere Zellen  _
erfasst, da ihr
'   Anfangswert oben auf 0 gesetzt wurde) wird hier das Ende des Bereichs ermittelt
If (Abs(Cells(j + 1, 44) - Cells(j, 44)) >= 0.5 And schalter = 1) Then
zeile_ende(i) = j           '   Ende eines Bereichs wird hier gesetzt, z.B. 1.Bereich:   _
_
_
Ende bei Zeile 70
schalter = 0                '   wird auf 0 gesetzt, damit der Beginn des nächsten  _
Bereichs festgestellt wird
i = i + 1                   '   nächster Bereich wird initialisiert, somit folgt: 2. _
Bereich: Beginn/Ende
End If
If Cells(j + 1, 44) = 0 And schalter = 0 Then   '   die leeren Zellen werden wieder zurück   _
_
_
gesetzt,
Cells(j + 1, 44) = ""                       '   somit wird das Ergebnis nicht verfä _
lscht
End If
Next j
i = i - 1
End Sub

Kurze Erklärung:
zeile_anf soll sich ja den Anfang des jeweiligen Bereieches merken, also beim ersten Bereicht "15" und zeile_ende soll übersprungen werden bis eine Leerzeile kommt, die Das eigenartige ist, dass genau dieser Code in einer anderen Exceltabelle funktioniert. Ich habe diese kopiert und jetzt speichert sie die Bereiche nicht.
Sprich es wird jeder Punkt einzeln in einem Diagramm angezeigt. Obwohl es zum Beipsiel 3 Kurven sein sollten, erhalte ich stattdesssen 300 Einzelpunkte.
Vielen Dank schon mal im Voraus!!
Grüße Lari

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anfang und Ende des Datenfeldes speichert nicht
31.07.2015 18:10:22
AlexG
Hallo Larissa,
mir sind ein paar Fehler in der Klammersetzung der If- Anweisungen aufgefallen.
Ob das der Fehler war weis ich nicht, ohne Bsp.- Datei kann man das ja nicht testen.
Noch eine kleine Anmerkung. Für Schalter verwendet man normalerweise eine Boolean Variable die entweder auf True oder False gesetzt wird.
Sub Zellen_Zaehlen()
Dim letzte_zeile As Integer
Dim zeile_anf(0 To 1000) As Integer     '   dieses Datenfeld merkt sich den Anfang eines Bereichs 
Dim zeile_ende(0 To 1000) As Integer    '   dieses Datenfeld merkt sich das Ende eines Bereichs 
Dim schalter As Integer, ende As Integer    '   Hilfsvariablen für for-Schleifen 
Dim co1 As ChartObject, co2 As ChartObject, co3 As ChartObject  '   werden zur Erstellung der _
                                                                    Diagramme benötigt 
Dim ch1 As Chart, ch2 As Chart, ch3 As Chart                    '   werden zur Erstellung _
                                                                    der Diagramme benötigt 
Dim i As Integer    '   Laufvariable innerhalb des Datenfelds 
Dim j As Integer    '   Laufvariable für Zeilen 
Dim lllll As b

'   ******************************************************************************************** _
 _
 _
* 
'   hier erfolgt die Berechnung der Bereiche nach denen die ersten zwei Diagramme erstellt _
werden 
'   ******************************************************************************************** _
 _
 _
 
'   ************************************************************************************ 
'   ACHTUNG:    Die ha_korr steht aktuell in Spalte 44 (AR) ! Darauf wird hier aufgebaut! 
'               Sollte sich dies ändern müssen die folgenden Zeilen angepasst werden! 
'   ************************************************************************************ 
letzte_zeile = Cells(Rows.Count, 44).End(xlUp).Row
schalter = 0
i = 1

For j = 15 To letzte_zeile          '   Startzeile ist 15 (vgl. bei Unstimmigkeiten Blatt _
"Berechnung Wht") 
    If Cells(j, 44) > 0 And Cells(j, 44) <> "" And schalter = 0 Then
        zeile_anf(i) = j            '   Beginn eines Bereichs wird hier gesetzt, z.B. _
1.Bereich: Beginn bei Zeile 13 
        If Cells(j, 44) <> "" Then
            schalter = 1            '   schlater = 1 gesetzt, damit das Ende des Bereichs _
ermittelt werden kann 
        End If
    End If
    
    If Cells(j + 1, 44) = "" Then   '   Hilfskonstruktion um die Funktion Abs in der _
nächsten Abfrage 
        Cells(j + 1, 44) = 0        '   bilden zu können; mit leeren Zellen nicht möglich 
    End If
    
    '   wenn die Abweichung der nächsten Zelle >= 0.5 ist (damit werden auch leere Zellen _
    erfasst, da ihr Anfangswert oben auf 0 gesetzt wurde) wird hier das Ende des Bereichs _
    ermittelt 
    If (Abs(Cells(j + 1, 44) - Cells(j, 44))) >= 0.5 And schalter = 1 Then
        zeile_ende(i) = j           '   Ende eines Bereichs wird hier gesetzt, z.B. 1.Bereich: _
        Ende bei Zeile 70 
        schalter = 0                '   wird auf 0 gesetzt, damit der Beginn des nächsten _
Bereichs festgestellt wird 
        i = i + 1                   '   nächster Bereich wird initialisiert, somit folgt: _
2.Bereich: Beginn/Ende 
    End If
    
    If Cells(j + 1, 44) = 0 And schalter = 0 Then   '   die leeren Zellen werden wieder zurückgesetzt, 
        Cells(j + 1, 44) = ""                       '   somit wird das Ergebnis nicht verfälscht 
    End If
    
Next j
i = i - 1
End Sub

Gruß
Alex
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige