online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Nobody48 vom 18.02.2019, 10:14 Options

Makro für Registerwechsel

Hallo,
zuerst einen schönen guten Morgen an alle in diesem Forum.
Ich bekomme jede Woche eine Exceldatei mit Prüfstandsergebnissen. Diese Ergebnisse möchte ich in einer Häufigkeitstabelle darstellen.
Habe mir ein Register "Diagramm" angelegt in dem ich mir per aufgezeichnetem Makro die Häufigkeitsverteilung anzeigen lasse sowie den Min, Mittel bzw. den Max-Wert . Bsp. 2.Gang Schub.
Mein Problem besteht nun, wie kann ich mir die Ergebnisse der anderen Wochen anzeigen lassen.
Mein Gedanke geht im Moment dahin, ob man per Makro eine Abfrage bekommt, welche Woche ich dargestellt haben möchte, und dann diese Daten dann in ein Auswerteregister reinkopiert werden.
Diese könnten dann im Register Diagramm dann dargestellt werden.
Nun habe ich zum besseren Verständnis eine abgespeckte Beispiel Datei hochgeladen.
Hier der Link:
http://www.uploadagent.de/files/1171787120/Wochenabfrage.xls

Klasseneinteilung: 50 fest.
wöchentliche Zeileneinträge bis ca. Zeile 2000 ausreichend.
Super wäre auch noch wenn man in dem Häufikeitsdiagramm einen Grenzwert der je nach Gang unterschiedlich sein kann darstellen könnte ohne eine Linie einzeichnen zu müssen.


Für einen Lösungsvorschlag DANKE im voraus.
Reiner


Antwort schreiben

Antwort 1 von Beverly vom 18.02.2019, 10:43 Options

Hi Reiner,

schau dir mal auf meiner HP Beverly's Excel-Inn , Seite "Diagramme" das Beispiel "Dynamisches Diagramm_2" an, welches eine Formellösung darstellt. Das Beispiel ist zwar für eine Säulendiagramm erstellt, funktionert aber vom Prinzip her genauso auch bei anderen Diagrammtypen.
Auf der Seite "Diagramme m. VBA" findest du außerdem das Beispiel Datenbereich auslesen und das Beispiel Datenbereich übernehmen .

Vielleicht kannst du ja eins davon an deine Bedingungen anpassen. Falls du Fragen dazu hast oder sie nicht so richtig auf dein Problem anwendbar sind - frage ruhig zurück.

Für die Darstellung der Linie: mir ist nicht ganz klar, woraus sich der Wert dafür ergibt. Aber vielleicht hilft dir schon dieser Tipp: erstelle eine neue Datenreihe aus 2 Wertepaaren - X-Wert=Grenzwert / Y-wert=0 und X-Wert=Grenzwert / Y-Wert=Maximum deiner Y-Achse. Dieser Reihe ordnest du den Diagrammtyp Punkt(XY) zu.

Bis später,
Karin

Antwort 2 von nobody48 vom 18.02.2019, 11:02 Options

Hallo Karin,
Danke für Deine schnelle Antwort.
Werde mich gleich heute mittag an Deinen Lösungsvorschlag ranmachen.
PS: Auf Deiner HP war ich ich schon oft, ist bei mir in den den Favoriten abgespeichert.
" Einfach Spitze "

Danke und noch einen schönen Sonntag
Reiner

Antwort 3 von nobody48 vom 18.02.2019, 13:38 Options

Hallo Karin,
habe mir Deine Beispieldateien downgeloadet.
Leider bin ich im Moment völlig von der Rolle.
Ich habe keinen Plan,wie ich Deinen Lösungsvorschlag umsetzen könnte.
Aber aufgeben ist so schnell nicht drin.

Gruß aus Osterburken
Reiner

Antwort 4 von nobody48 vom 20.02.2019, 10:13 Options

Hallo an alle,
habe gestern den ganzen Nachmittag probiert und probiert, leider ohne richtigen Erfolg .
Mit dem Lösungsvorschlag von Karin mit dem dynamischen Diagramm bin ich am weitesten gekommen. Nur ein wechsel in eine andere Kalenderwoche bekomme ich einfach nicht hin.
Geht dies überhaupt per Makro ??

Gruß Reiner

Antwort 5 von Beverly vom 20.02.2019, 10:48 Options

Hi Reiner,

es geht (fast) alles mit VBA.

Sub erster_Gang()
    Dim chDiagramm As Chart
    Dim strTabelle As String
    Dim inTabellen As Integer
    strTabelle = InputBox("Bitte Tabellename eingeben")
    Application.ScreenUpdating = False
    For inTabellen = 1 To ThisWorkbook.Sheets.Count
        If Worksheets(inTabellen).Name = strTabelle Then Exit For
        If inTabellen = ThisWorkbook.Sheets.Count And Sheets(inTabellen).Name <> strTabelle Then
            MsgBox "Diese tabelle gibt es nicht"
            Exit Sub
        End If
    Next inTabellen
    Set chDiagramm = Worksheets("Diagramm").ChartObjects(1).Chart
    With chDiagramm
        .SetSourceData Source:=Sheets(strTabelle).Range("Q3:Q52"), PlotBy:= _
            xlColumns
    End With
'    Windows("Schub Wochenabfrage P3 für 217 CAS.xls").Activate
    Range("I5:J6").FormulaR1C1 = "='" & strTabelle & "'!R[50]C[8]"
    Range("L5:M6").FormulaR1C1 = "='" & strTabelle & "'!R[53]C[5]"
    Range("O5:P6").FormulaR1C1 = "='" & strTabelle & "'!R[56]C[2]"
    Range("J9:O10").FormulaR1C1 = "='" & strTabelle & "'!R[-8]C[7]"
    Application.ScreenUpdating = True
End Sub


Falls sich der Code nicht auf eine andere Arbeitsmappe als die mit dem Code beziehen soll, musst du ThisWorkbook durch ActiveWorkbook ersetzen. Ws die von mir auskommentierte Codezeile machen soll, kann ich nicht testen.

Bis später,
Karin

PS: in VBA kann zu 99% auf Select/Activate verzichtet werden.

Antwort 6 von nobody48 vom 20.02.2019, 12:23 Options

Hallo Karin,
vielen Dank für Deine Hilfe. Dein Makro mit der Tabellenabfrage passt schon. Nur habe ich mir vorgestellt, das nach der Wochenabfrage in dem gewünschten Register die Spalten A bis M und bis Zeile 2000 die Einträge in ein Auswerteregister kopiert werden. Dadurch müsste ich nicht in jede einzelne Kalenderwoche die Formeln hinterlegen.
Bsp.
Ich möchte KW 05-07 anschauen, starte dein Makro,
gebe 05-07 ein, jetzt sollten die Daten aus KW 05-07 in Auswerteregister kopiert werden ( hier sind auch die Formeln hinterlegt) , danach könnten die einzelnen Gänge im Register Diagramm betrachtet werden.

Tausend Dank im voraus
Reiner

Antwort 7 von Beverly vom 20.02.2019, 13:15 Options

Hi Reiner,

also irgendwie verstehe ich nicht, wozu das Ganze gut sein soll - wozu die Werte in eine gesonderte Tabelle kopieren, wenn es ausreicht, den Datenbereich des Diagramms an den Bereich der betreffenden Ausgangstabelle anzupassen? Das ist in meinen Augen "von hinten durch die linke Brust ins rechte Auge".

Das Kopieren lässt sich mit dem Makrorecorder aufzeichnen. Wie du die Tabelle auswählst, dazu kannst du den Teil der Abfrage aus meinem letzten Code nehmen. Den ganzen Teil mit der Zuweisung des Datenbereichs für das Diagramm weglassen und an diese Stelle den Kopierteil.

Bis später,
Karin

Antwort 8 von nobody48 vom 20.02.2019, 16:45 Options

Hallo Karin,
ich verstehe Dich, was ich nicht erwähnt habe ist, daß ich mir mit per HTML eine Qualitätsplattform gebastelt habe. In dieser Plattform wollte ich die Häufigkeitsverteilungen im Register Diagramm Wochenweise durchnavigieren.
Werde versuchen mit dem Makrorecorder weiterzukommen.

Für Deine Bemühungen trotzdem Danke
Reiner

Antwort 9 von Beverly vom 20.02.2019, 17:00 Options

Hi Reiner,

weshalb muss man das Gesamtproblem Stückchenweise offenbaren? Dann hätten wir uns den gesamten Thread sparen können.

Wenn dein Datenbereich immer in A1 beginnt, dann kannst du mit diesem Code den benutzen Bereich der aktiven Tabelle kopieren

ActiveSheet.UsedRange.Copy Worksheets("Auswerteregister").Range("A1")


Bis später,
Karin

Antwort 10 von Nobody48 vom 20.02.2019, 18:07 Options

Hallo Karin,
bitte um Entschuldigung !!
Ich habe mich aber schon seit mehreren Tagen, nach Arbeitsende in diese Datei verbohrt. Da ich nur Makros mit dem Recorder erstellen kann, war mir nicht bewußt, daß mein Problem einfacher zu lösen ist. Weiter habe ich nicht daran gedacht die HTML Plattform zu erwähnen.
Als Excel Oberflächenanwender war ich schon oft auf Deiner HP und auch auf den Links-Seiten.
Hier versuche ich mir immer wieder neue Kentnisse anzueignen. Was Ihr alles an Lösungen parat habt ist absolute Spitze.
Ich sitze manchmal Tage an für Euch einfachsten Dateien, nur um mir bei der täglichen Arbeit einbischen Erleichterung zu schaffen. Viele Aktionen führe ich manuell aus.
Sorry !!
Reiner

Antwort 11 von Beverly vom 20.02.2019, 20:23 Options

Hi Reiner,

ist schon OK - beim nächsten Mal weißt du Bescheid. Je genauer die Beschreibung des Problems, desto besser und einfacher für die Helfer.

Was die Lösungen betrifft, die wir "parat" haben: im Lauf der Zeit sammeln sich viele Beispiele an, die man immer wieder verwenden und anpassen kann, aber sehr häufig ist es auch so, dass man für den gegebenen Fall etwas völlig Neues machen muss. Die meisten dieser Codes sind in mühevoller Kleinarbeit entstanden und manchmal könnte man vor Verzweiflung in den Schreibtisch beißen, wenn etwas nicht so funktioniert wie man sich das denkt, obwohl es doch logischerweise eigentlich funktionieren müsste... Du siehst also, auch den Fortgeschritten (ich zähle mich gewiss nicht zu den Profis) fällt nicht alles einfach in den Schoß.

Also nichts für ungut.. Nur wer nichts tut kann auch keine Fehler machen. ;-)))

Bis später,
Karin

Antwort 12 von nobody48 vom 25.02.2019, 18:34 Options

Hallo an alle in diesem Forum,
leider komme ich mit den Lösungsvorschlägen von Karin alias "Beverly" nicht richtig weiter. (liegt aber an mir)
Habe hier noch einmal eine leicht abgeänderte Datei hochgeladen. Wie oben schon beschrieben möchte ich aus einer HTML Plattform diese Excel Datei steuern.
Was mir fehlt ist das kopieren der einzelnen Wochen ins Register Auswertung per Makro.
Ich glaube beim anschauen der Demo Datei ist einiges selbst sprechend.
Link: http://www.netupload.de/detail.php?img=ad521de24b2e528e01053087a8201b77.xls

Für Eure Hilfe Danke im voraus
Reiner

Antwort 13 von Beverly vom 25.02.2019, 19:19 Options

Hi Reiner,

Sub kopieren()
    ActiveSheet.Range("A2:M14").Copy Worksheets("Auswertung").Range("A2")
End Sub


Bis später,
Karin

Antwort 14 von nobody48 vom 25.02.2019, 20:13 Options

Hallo Karin,
habe deinen Code kopiert sieht im Moment so aus:

Sub erster_Gang()
Dim chDiagramm As Chart
Dim strTabelle As String
Dim inTabellen As Integer
strTabelle = InputBox("Bitte Tabellename eingeben")
Application.ScreenUpdating = False
For inTabellen = 1 To ThisWorkbook.Sheets.Count
If Worksheets(inTabellen).Name = strTabelle Then Exit For
If inTabellen = ThisWorkbook.Sheets.Count And Sheets(inTabellen).Name <> strTabelle Then
MsgBox "Diese tabelle gibt es nicht"
Exit Sub
End If
ActiveSheet.Range("A2:M14").Copy Worksheets("Auswertung").Range("A2")
End Sub.
Nun bekomme ich Fehlermeldung !
Fehler beim kompilieren usw.

Ich habe versucht aus Deinen oben genannten Vorschlägen Makro hinzubekommen, bin leider nicht in der Lage
Was mache ich falsch????
Gruß Reiner

Antwort 15 von Beverly vom 25.02.2019, 21:31 Options

Hi Reiner,

ganz einfach: du hast nur einen Teil des Codes kopiert - es fehlt der Abschluss der For...Next Schleife.

Versuche es mit diesem Code

Sub erster_Gang()
    Dim chDiagramm As Chart
    Dim strTabelle As String
    Dim inTabellen As Integer
    strTabelle = InputBox("Bitte Tabellename eingeben")
    Application.ScreenUpdating = False
    For inTabellen = 1 To ThisWorkbook.Sheets.Count
        If Worksheets(inTabellen).Name = strTabelle Then Exit For
        If inTabellen = ThisWorkbook.Sheets.Count And Sheets(inTabellen).Name <> strTabelle Then
            MsgBox "Diese Tabelle gibt es nicht"
            Exit Sub
        End If
    Next inTabellen
    Worksheets(strTabelle).Range("A2:M14").Copy Worksheets("Auswertung").Range("A2")
    Set chDiagramm = Worksheets("Diagramm").ChartObjects(1).Chart
    chDiagramm.SetSourceData Source:=Sheets("Auswertung").Range("R3:R52"), PlotBy:=xlColumns
    Range("I5:J6").FormulaR1C1 = "='" & strTabelle & "'!R[50]C[8]"
    Range("L5:M6").FormulaR1C1 = "='" & strTabelle & "'!R[53]C[5]"
    Range("O5:P6").FormulaR1C1 = "='" & strTabelle & "'!R[56]C[2]"
    Range("J9:O10").FormulaR1C1 = "='" & strTabelle & "'!R[-8]C[7]"
    Application.ScreenUpdating = True
End Sub


Bis später,
Karin

Antwort 16 von nobody48 vom 26.02.2019, 06:49 Options

Hallo Karin,
bin gerade am testen, sieht super aus.

Tausend Dank
Reiner

Ähnliche Themen

kann wegen makro nicht drucken - was machen?
srepsac  26.06.2007 - 118 Hits - 1 Antwort

Markos unsichtbar/sichtbar schalten
User3  17.09.2007 - 72 Hits - 1 Antwort

Makro für alle Tabellenblätter verfügbar machen
dieter1958  12.01.2008 - 108 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026