Treppenfunktion - Grafik

Moderator: ModerationP

Treppenfunktion - Grafik

Beitragvon PJM » 24. Aug 2018, 18:34

Hallo,
hier im Forum habe ich ein VBA-Programm für eine Treppenfunktionsgrafik gefunden.

Problem:
Gibt es die Möglichkeit aus den x-y-Werten(Original) einen virtuellen Range zu erzeugen mit den notwendigen doppelten X-Werte und den dazugehörigen Y-Sprungwerten. Mit dem neuen Range wird dann die X-Y-Grafik erzeugt. Die Origianl-X-Y-Werte sollen dabei immer erhalten bleiben.

Besten Dank für Eure Antwort!
Ich arbeite mit Excel 2002.

Gruß
PJM
PJM
 

Re: Treppenfunktion - Grafik

Beitragvon Flotter Feger » 24. Aug 2018, 21:03

Hallo,

läßt du uns auch an deiner Fundstelle teilhaben ?
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit, Office 2016 Pro Plus 32-Bit und Office 2019 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2531
Registriert: 24. Okt 2016, 16:40

Re: Treppenfunktion - Grafik

Beitragvon PJM » 25. Aug 2018, 14:52

Hallo,
Fundstelle Datum: 19.August 2009 Treppenfunktion!
(Im Forum zu suchen ist etwas schwierig)
Gruß
PJM
PJM
 

Re: Treppenfunktion - Grafik

Beitragvon juvee » 25. Aug 2018, 15:09

Hi,

state of the Art wäre ein Link oder eine URL, z.B. so

viewtopic.php?f=166&t=776219

VG Juvee
Ich habe "juvee" am 25.01.2018 gegoogelt. Ich distanziere mich von den ungefähr 252 Einträgen ausdrücklich.
Da binich nich dabei, dat is pri ima, vivaaaaa....lalalala!
juvee
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2826
Registriert: 05. Jun 2014, 12:48

Re: Treppenfunktion - Grafik

Beitragvon PJM » 25. Aug 2018, 15:11

Hallo, das ist die Funstelle:
Hallo Wolf Dieter,
weil bisher kein Feedback eintraf, habe ich meinen Beitrag noch einmal angesehen und festgestellt, dass ich nicht alles aus meinem früheren Programm gelöscht hatte, was für dich nicht relevant ist. Deshalb noch einmal mit deinem Beispiel. Die Werte beginnen in Zeile 1. Wie schon geschrieben, müssen sie überlappend eingetragen sein:
A B
0 1
50 1
50 1,5
75 1,5
75 5
150 5

Sub Treppenfunktion()
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.ChartType = xlXYScatterLinesNoMarkers
.SetSourceData Source:=Range("A1:B" + CStr(Cells(Rows.Count, 1).End(xlUp).Row)), PlotBy:=xlColumns
.SetElement (msoElementPrimaryValueGridLinesNone)
.SetElement (msoElementLegendNone)
.SeriesCollection(1).MarkerStyle = 0
End With
End Sub

Gruß
Holger
PJM
 


Re: Treppenfunktion - Grafik

Beitragvon juvee » 25. Aug 2018, 19:04

Hi,

ich tappe irgendwie im Dunklen. Mal ein Schuss ins blaue

einen virtuellen Range zu erzeugen mit den notwendigen doppelten X-Werte und den dazugehörigen Y-Sprungwerten


Gesetzt den Fall, deine Werte befinden sich in A2:Bxxx, diese kopierst du dann nach L2:Mxxx und setzt darauf den Chart auf.

Ich gehe dann mal von Überschriften in A1 und B1 aus
Code: Alles auswählen
Sub theFoxInTheBox()
   
With Worksheets("Tabelle2")
    .Range("A1").CurrentRegion.Resize(, 2).Offset(1).Copy .Range("L2")
     Set c = Range("L2").CurrentRegion
    .Shapes.AddChart.Select
     With ActiveChart
       .ChartType = xlXYScatterLinesNoMarkers
       .SetSourceData Source:=c, PlotBy:=xlColumns
       .SetElement (msoElementPrimaryValueGridLinesNone)
       .SetElement (msoElementLegendNone)
       .SeriesCollection(1).MarkerStyle = 0
      End With
End With
End Sub


VG Juvee
Ich habe "juvee" am 25.01.2018 gegoogelt. Ich distanziere mich von den ungefähr 252 Einträgen ausdrücklich.
Da binich nich dabei, dat is pri ima, vivaaaaa....lalalala!
juvee
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2826
Registriert: 05. Jun 2014, 12:48

Re: Treppenfunktion - Grafik

Beitragvon PJM » 26. Aug 2018, 08:55

Hallo,
ja aber die Originaldaten bestehen z.B. aus 200 "Zeilen", für die Treppenfunktion sind aber 2*200 = 400 "Datenzeilen" notwendig!

In VBA soll aus dem Originalrange (200 Zeilen) ein virtueller Range mit den doppelten x-Werten (400 Zeilen) erzeugt werden. Der neue Range sollte nur intern und
nicht in die Tabelle irgend wohin geschrieben werden.
Geht sowas?

Gruß
PJM
PJM
 

Re: Treppenfunktion - Grafik

Beitragvon losgehts » 26. Aug 2018, 10:23

Hallo,

klar geht das, man kann einem Diagramm die Daten auch direkt in Arrays übergeben, ohne dass sie im Tabellenblatt stehen. Ich empfehle allerdings, das nur zu machen, wenn man "die Sache im Griff" hat. Für viele ist ein Diagramm schon ein "Zauberding". Dann ist es besser, wenn die Daten, die im Diagramm visualisiert werden, im Tabellenblatt stehen. Dann kann man sie dort modifizieren und dabei beobachten, dass das erwartete passiert. Bei der Visualisierung von Daten, die nirgendwo anfassbar stehen, ist das anders. (Die Philosophie von Tabellenkalkulationsprogrammen ist ja, dass die Daten sichtbar in Tabellen stehen. Und somit ohne Programmiererfahrung "programmiert" werden kann. Diese Philosophie wird bei deinem Vorhaben ausgehebelt.)

Nun gut, soweit zu meinen Bedenken.

Du kannst die Zahlen ja sehr einfach mit Formeln herstellen:
X-Werte (beginnen ab Zeile 2 in Spalte A):
=INDEX(A:A;ZEILE(A5)/2)
Y-Werte (beginenn ab Zeile2 in Spalte B)
=INDEX(B:B;ZEILE(A4)/2)
Die beiden Formeln runterziehen und schon hast du deine Werte zusammen!
Und dann einfach dein Diagramm zeichenen - alles einfach und ohne VBA.


OK, ich habe ja verstanden, dass du das nicht im Tabellenblatt haben möchtest. Hier also ein VBA-Code, den du wahrscheinlich leicht an deine Bedürfnisse anpassen musst:
Code: Alles auswählen
Sub darstellenAlsTreppe()
Dim x As Variant, y As Variant
Dim xTrepp() As Double, yTrepp() As Double
Dim i As Long, lngLastrow As Long

lngLastrow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row         'letzte Zeile => evtl. anders ermitteln - jeh nach Tabellenaufbau

' x- und Y-Werte aus Tabellenblatt entenehmen
    lngLastrow = lngLastrow + 1                                     ' Es muss ein X-Wert mehr dabei sein, als im Tabellenblatt steht.
    x = Range(Cells(2, 1), Cells(lngLastrow, 1)).Value              ' aus Spalte A, Zeile 1 sind Überschriften
    y = Range(Cells(2, 2), Cells(lngLastrow, 2)).Value              ' aus Spalte B

' den letzten X-Wert dazu erfinden => evtl. nach Bedürfnis anpassen
    x(UBound(x), 1) = x(UBound(x) - 1, 1) + (x(UBound(x) - 1, 1) - x(UBound(x) - 2, 1))

' Arrays mit X- / Y-Werten für das Diagramm füllen
    ReDim xTrepp(1 To (UBound(x) - 1) * 2)
    ReDim yTrepp(1 To (UBound(x) - 1) * 2)
    For i = 1 To UBound(x) - 1
        xTrepp(i * 2 - 1) = x(i, 1)
        xTrepp(i * 2) = x(i + 1, 1)
       
        yTrepp(i * 2 - 1) = y(i, 1)
        yTrepp(i * 2) = y(i, 1)
    Next

' Diagramm erstellen
    ActiveSheet.Shapes.AddChart.Select
    With ActiveChart
    .ChartType = xlXYScatterLinesNoMarkers
        With .SeriesCollection.Add(Range("A1:B2"), xlRows)      'A1:B2 ist nur ein dummy
            .XValues = xTrepp
            .Values = yTrepp
            .MarkerStyle = 0
        End With
    End With
   
End Sub


Habe ich dich richtig verstanden?

Grüße, Ulrich
Ich freue mich über jede Art von Feedback
Die Forensoftware sendet mir aktuell keine Benachrichtigungen mehr zu, daher kann es gut sein, dass ich deine Antwort auf meinen Post nicht mitbekomme.
losgehts
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4647
Registriert: 03. Okt 2006, 14:08

Re: Treppenfunktion - Grafik

Beitragvon PJM » 26. Aug 2018, 16:24

Hallo Ulrich,

ja, genau so sollte es sein.

Dank und Gruß

PJM
PJM
 


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 24 Gäste