Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Diagramm dynamisch erweitern
#1
Hallo,

ich möchte ein Diagramm basierend auf einer sich in Intervallen ändernden Tabelle dynamisch anpassen. Bisher sind 10 Werte in der Tabelle und im zugehörigen Diagramm korrekt abgebildet.

In Spalte A wird der Timestamp gelistet, in Spalte B der zugehörige Temperaturwert. In der ersten Zeile befindet sich die Überschrift.

Folgendes habe ich bisher erfolglos versucht:

1. \Formeln \ Namensmanager \ Neu \
=> Name: "mein_Timestamp"
=> Bezieht sich auf: "=BEREICH.VERSCHIEBEN(Tabelle1!$A$2;0;0;ANZAHL2(Tabelle1!$A$2:$A$1000);1)"

2.  \Formeln \ Namensmanager \ Neu \
=> Name: "meine_Temp"
=> Bezieht sich auf: "=BEREICH.VERSCHIEBEN(Tabelle1!$B$2;0;0;ANZAHL2(Tabelle1!$B$2:$B$1000);1)"

Normalerweise müsste sich das zugehörige Diagramm bei einem neuen (elften) Eintrag anpassen. Dies passiert leider nicht. Woran könnte das liegen?

Danke!
Antworten Top
#2
Moin

Den Blödsinn mit BEREICH.VERSCHIEBEN() braucht man schon lange nicht mehr.
Mache aus der Liste eine formatierte Tabelle (STRG-T). Wichtig: Es dürfen keine leeren Zeilen enthalten sein.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • Wanderfalke
Antworten Top
#3
Danke, shift-del. Das funktioniert soweit.

Wie bekomme ich es hin, dass bei Verringerung der Werte die Tabelle (genauer Tabellenbereich) sich ebenfalls verringern.

Bsp.: Meine o.g. Tabelle hat statt 10 Einträge nur noch 7. Im Moment bleibt der Tabellenbereich bei 10 stehen und das Diagramm skaliert sich nicht zurück.

VG!
Antworten Top
#4
Hallo,

die 3 leeren Zeilen in der Tabelle nicht bloß auf leer setzen, sondern entfernen!
(Von links her auf die zu entfernende Tabellenzeile zeigen mit dem Mauszeiger - der Mauszeiger verwandelt sich dabei in einen waagrechten schwarzen Pfeil - dann linke Maustaste drücken - es wird dadurch exakt nur der Zeilenbereich innerhalb der Tabelle markiert - rechte Maustaste drücken - den Befehl zum Löschen von Tabellenzeilen wählen)
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
[-] Folgende(r) 1 Nutzer sagt Danke an EA1950 für diesen Beitrag:
  • Wanderfalke
Antworten Top
#5
Hallo Anton,

danke für Deine Antwort.

Allerdings möchte ich dies per Makro durchführen - und hier stehe ich vor dem nächsten Problem:

Wie ermittle ich den letzten Zeileneintrag in einer formatierten Tabelle?  Im Normalfalle funktioniert bspw. dieser Code ohne Probleme:

Sub letzte_zeile()
Dim letzteZeile As Integer
  'Hier wir die letzte Zeile der Spalte A ermittelt
  letzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
  MsgBox letzteZeile
End Sub


VG!
Antworten Top
#6
Hallo,

wenn du mit "formatierten" Tabelle eine strukturierte Tabelle meinst, die man zB. mit Strg+T einfügen kann:

Eine solche Tabelle schimpft sich im Excel-VBA als ein Objekt vom Klassentyp "ListObject":
ein solches Objekt besitzt eine Reihe von "Sub"-Objekten, aus denen es zusammengesetzt ist (zB.: ListRows, ListColumns). Diese besitzen wieder Range-Objekte.
Ferner hat es auch einen "Name"

Jedes Arbeitsblatt besitzt eine dazugehörige Auflistung "ListObjects", wobei das einzelne ListObject über seine Nummer (ID) bzw. seinen Namen angesprochen werden kann:
zB. ActiveSheet.ListObjects(1)  oder ActiveSheet.ListObjects("Tabelle1"), falls "Tabelle1" der Name dieser strukt.Tabelle ist (nicht zu verwechseln mit dem Arbeitsblattnamen!!).

Angenommen im aktiven Arbeitsblatt befinde sich nur eine struktur.Tabelle namens "Tabelle1". Diese kann wie vorhin erwähnt angesprochen werden.
Sie besitzt eine Kopfzeile, die sich im Zellbereich ActiveSheet.ListObjects(1).HeaderRowRange befindet.
Sie besitzt Tabellenzeilen ActiveSheet.ListObjects(1).ListRows, deren Anzahl mit ActiveSheet.ListObjects(1).ListRows.Count ermittelt werden können.

Um zB. die letzte Tabellenzeile der struktur.Tabelle namens "Tabelle1" im aktiven Arbeitsblatt zu entfernen, kann man dies über das folgende Makro tun:
Dim lstObj As ListObject
dim lstRow as ListRow, rngZeile as Range
Dim lstZeilen as Long
set lstObj = ActiveSheet.ListObjets("Tabelle1")
lstzeilen = lstObj.ListRows.Count
set lstRow = lstObj.ListRows(lstZeilen)  'Die letzte Tabellenzeile
lstRow.Delete 'Entfernt die letzte Tabellenzeile
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
[-] Folgende(r) 1 Nutzer sagt Danke an EA1950 für diesen Beitrag:
  • Wanderfalke
Antworten Top
#7
Hallo EA1950,

besten Dank für deine superverständliche und ausführliche Anleitung! Damit hat es final funktioniert.

VG!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste