[Excel 2000] Abfrage aktualisieren

Hallo,

mittels „Externe Daten / Abfrage erstellen“ habe ich eine Abfrage auf eine Access-Tabelle erstellt. Funktioniert auch soweit.

Für jeden Tag wird ein Datensatz an Bewegungsdaten (Saldo aus Kontenbewegungen) abgefragt und übertragen.
In der Exceltabelle habe ich am Spaltenende (nach eingen Leerzeilen) eine Summenfunktion.

Frage:
Nun möchte ich nicht nur die jeweils aktuelle Summe haben, sondern auch die kumulierten Werte eines jeden Vortages.
Dies bekomme ich jedoch nicht gepeilt, da bei der Aktualisierung der xls-Tabelle, anschließend Formel-Chaos angesagt ist. Die Formeln der kumulierten Spalte werden unbrauchbar.

Hat jemand einen Lösungs-Ansatz ?

Danke + Grüße
jwd

Hi jwd,

Nun möchte ich nicht nur die jeweils aktuelle Summe haben,
sondern auch die kumulierten Werte eines jeden Vortages.

Sorry, kumuliert lese ich gelegentlich, was das genau bedeutet weiß ich nur manchmal.

Dies bekomme ich jedoch nicht gepeilt, da bei der
Aktualisierung der xls-Tabelle, anschließend Formel-Chaos
angesagt ist. Die Formeln der kumulierten Spalte werden
unbrauchbar.
Hat jemand einen Lösungs-Ansatz ?

Ja,
mit einem zeitgesteuerten Makro diese Query alle k.A. 10 Minuten auslesen/anregen.
Dabei vorher diese kumulitierten Daten speichern, dann nach Aktualisierung der Query, dies wieder einbringen, in die Summe oder so.

Wie angefragt, nur ein Ansatz, brainstorming quasi.

Ob die Umsetzung gelingt weiß ich nicht.

Gruß
Reinhard

Danke Reinhard,

lieber wäre mir eine Möglichkeit, dass man die xls-Tabelle öffnen könnte, Daten aktualisieren drückt und die kumulierten Werte sich „wie von selbst“ errechnen

Grüße
jwd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo jwd,

mittels „Externe Daten / Abfrage erstellen“ habe ich eine
Abfrage auf eine Access-Tabelle erstellt. Funktioniert auch
soweit.

Für jeden Tag wird ein Datensatz an Bewegungsdaten (Saldo aus
Kontenbewegungen) abgefragt und übertragen.

Woher und wie kommen die Daten in die access-Tabelle?
Aus SAP? Mit Hilfe eines Downloads und anschließendem Import in Access?
Oder werden die Daten direkt über eine programmierte Schnittstelle in Access geladen? Ich meine, Kontenbewegungsdaten enstehen ja nicht in Access? Normalerweise würd ich hier ansetzen. Und wenn du diese Access-Abfrage gemacht hat, mach eine neue, die dir das liefert, was du brauchst.
Der einfachste Weg ist die direkte Abfrage der Bewegungsdaten als Saldenabfrage in dem Buchungssystem oder, wenn das nicht möglich ist (weil du nicht weißt wie es geht oder weil du keine Zugangsberechtigung hast oder …), das Laden aller Einzelposten der betreffenden Konten in Access und dann eine entsprechende Abfrage in Access. Werden in dieser Abfrage die Soll-Posten je Tag summiert, und die Habenposten je Tag summiert oder auch gleich saldiert (ich kenne die genaue Aufgabe nicht), hast du schon ein super Grundlage für deine kumlierende Ausgabe. Dafür würde ich dann einen Bericht in Access erstellen. So hast du zuverlässig jederzeit sofort deine fertige gewünschte Liste, die du natürlich auch in Excel ausgeben kannst. (Ist eine typische Datenbankanwendung und mit Access als Anwenderorientierte DB auch schnell eingerichtet.

In der Exceltabelle habe ich am Spaltenende (nach eingen
Leerzeilen) eine Summenfunktion.

Frage:
Nun möchte ich nicht nur die jeweils aktuelle Summe haben,
sondern auch die kumulierten Werte eines jeden Vortages.
Dies bekomme ich jedoch nicht gepeilt, da bei der
Aktualisierung der xls-Tabelle, anschließend Formel-Chaos
angesagt ist. Die Formeln der kumulierten Spalte werden
unbrauchbar.

Hat jemand einen Lösungs-Ansatz ?

Wenn es unbedingt in Excel gelöst werden soll, dann würde ich folgenden Weg vorschlagen:
eine Excel Datei lädt täglich die Daten aus der Access-DB, das kann man über ein Makro, also auf Knopfdruck machen. Diese Datei benutzt du täglich, die Daten werden also immer überschrieben. Die Daten stehen dann immer in bestimmten Zellen in der Excel-Datei.

Eine weitere xls sammelt die Tagessalden, das heißt jeden Tag wird auch mit Hilfe eines Makro die erste Tabelle geöffnet, die Daten werden kopiert und eingefügt, es wird somit eine weitere Zeile gefüllt. In dieser Excel-Datei sind deine Formeln für das Ermitteln der Werte.

PS
Ich habe schon beide Wege erprobt. Meine Erfahrung sagt, Access ist der schnellere einfachere Weg, mit Access ist man auf der sicheren Seite.

Gruß
Marion

Dank´ Dir Marion,

Deine Antwort gibt mir Hoffnung :smile:

Ich erhalte die Daten über eine ODBC-Schnittstelle als Abfrage nach Access; dort habe ich ich über die Funktion „Summe“ pro Konto (es sind 5 Stk) pro Tag je einen Wert als Saldo aus Soll und Haben - also eine Liste mit den 3 Spalten (Datum, Konto, Betrag)und maximal 5 Zeilen pro Tag (sofern jedes Konto an dem Tag auch eine Bewegung hatte).

Es muss keineswegs eine Excel-Lösung sein, nur weiß ich in Access hier nicht weiter …

Endziel ist, dass man in Excel 1!! Datei öffnet, die mit einer Access-Abfrage verknüpft ist, „!“ klickt und im Diagramm je 1 Kurve (als kumulierter Wert) pro Konto fortgeführt wird.

viele Grüße
jwd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi jwd,

Ich erhalte die Daten über eine ODBC-Schnittstelle als Abfrage
nach Access; dort habe ich ich über die Funktion „Summe“ pro
Konto (es sind 5 Stk) pro Tag je einen Wert als Saldo aus Soll
und Haben - also eine Liste mit den 3 Spalten (Datum, Konto,
Betrag)und maximal 5 Zeilen pro Tag (sofern jedes Konto an dem
Tag auch eine Bewegung hatte).
Es muss keineswegs eine Excel-Lösung sein, nur weiß ich in
Access hier nicht weiter …

tjanu, in Access weiß ich weniger als du, da tust du sehr weise daran Marion zu lauschen :smile:

Endziel ist, dass man in Excel 1!! Datei öffnet, die mit einer
Access-Abfrage verknüpft ist, „!“ klickt und im Diagramm je 1
Kurve (als kumulierter Wert) pro Konto fortgeführt wird.

Gut, lassen wir erstmal das Diagramm weg, das ist dann auch machbar.

Angenommen, du hast ein Blatt „Abfrage“ das so aussieht:

Tabelle:
[Mappe2]!Abfrage
 │ A │ B │ C │ 
──┼─────────┼───────┼──────────┤
1 │ Datum │ Konto │ bewegung │ 
2 │ 01. Jan │ 1 │ 34 │ 
3 │ 01. Jan │ 2 │ -4 │ 
4 │ 01. Jan │ 3 │ 0 │ 
5 │ 01. Jan │ 4 │ 0 │ 
6 │ 01. Jan │ 5 │ 10 │ 
──┴─────────┴───────┴──────────┘

Und die Daten kommen via Query von Access reingeschwebt.

Weiterhin hast du pro Konto ein Blatt, nennen wir sie Mal die Blätter Konto1,Konto2,Konto3 usw.
und die sehen alle so aus:

Tabelle:
[Mappe2]!Konto2
 │ A │ B │ C │ 
──┼────────┼──────────┼─────────┤
1 │ Datum │ Bewegung │ Summe │ 
2 │ 1.1.08 │ Übertrag │ 1234,80 │ 
──┴────────┴──────────┴─────────┘

dann mußt du nur noch auf einem beliebigen Blatt über Ansicht–Symbolleisten eine Befehlsschaltfläche einbauen, Rechtsklick auf diese Befehlssschaltfläche und dieser das nachfolgende Makro zuweisen.
Dann sieht nach Klick auf diese Befehlsschaltfläche das Konto2 so aus:

Tabelle:
[Mappe2]!Konto2
 │ A │ B │ C │ 
──┼──────────┼──────────┼─────────┤
1 │ Datum │ Bewegung │ Summe │ 
2 │ 39448,00 │ Übertrag │ 1234,80 │ 
3 │ 39448,00 │ -4,00 │ 1230,80 │ 
──┴──────────┴──────────┴─────────┘

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Wäre das ein Ansatz?

Gruß
Reinhard

Alt+F11, Einfügen–Modul, Code reinkopieren, Editor schließen.

Option Explicit
'
Sub Aktualisieren()
Dim Z, ZK, wsA
Set wsA = Worksheets("Abfrage")
With wsA
 .QueryTables(1).Refresh BackgroundQuery:=False
 For Z = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
 With Worksheets("Konto" & .Cells(Z, 2))
 ZK = .Cells(Rows.Count, 1).End(xlUp).Row + 1
 If wsA.Cells(Z, 3) 0 Then
 .Cells(ZK, 1) = wsA.Cells(Z, 1)
 .Cells(ZK, 2) = wsA.Cells(Z, 3)
 .Cells(ZK, 3) = .Cells(ZK - 1, 3) + .Cells(ZK, 2)
 End If
 End With
 Next Z
End With
End Sub

viele Grüße
jwd

:Hallo jwd,

mittels „Externe Daten / Abfrage erstellen“ habe ich eine
Abfrage auf eine Access-Tabelle erstellt. Funktioniert auch
soweit.

Für jeden Tag wird ein Datensatz an Bewegungsdaten (Saldo aus
Kontenbewegungen) abgefragt und übertragen.

Woher und wie kommen die Daten in die access-Tabelle?
Aus SAP? Mit Hilfe eines Downloads und anschließendem Import
in Access?
Oder werden die Daten direkt über eine programmierte
Schnittstelle in Access geladen? Ich meine,
Kontenbewegungsdaten enstehen ja nicht in Access?
Normalerweise würd ich hier ansetzen. Und wenn du diese
Access-Abfrage gemacht hat, mach eine neue, die dir das
liefert, was du brauchst.
Der einfachste Weg ist die direkte Abfrage der Bewegungsdaten
als Saldenabfrage in dem Buchungssystem oder, wenn das nicht
möglich ist (weil du nicht weißt wie es geht oder weil du
keine Zugangsberechtigung hast oder …), das Laden aller
Einzelposten der betreffenden Konten in Access und dann eine
entsprechende Abfrage in Access. Werden in dieser Abfrage die
Soll-Posten je Tag summiert, und die Habenposten je Tag
summiert oder auch gleich saldiert (ich kenne die genaue
Aufgabe nicht), hast du schon ein super Grundlage für deine
kumlierende Ausgabe. Dafür würde ich dann einen Bericht in
Access erstellen. So hast du zuverlässig jederzeit sofort
deine fertige gewünschte Liste, die du natürlich auch in Excel
ausgeben kannst. (Ist eine typische Datenbankanwendung und mit
Access als Anwenderorientierte DB auch schnell eingerichtet.

In der Exceltabelle habe ich am Spaltenende (nach eingen
Leerzeilen) eine Summenfunktion.

Frage:
Nun möchte ich nicht nur die jeweils aktuelle Summe haben,
sondern auch die kumulierten Werte eines jeden Vortages.
Dies bekomme ich jedoch nicht gepeilt, da bei der
Aktualisierung der xls-Tabelle, anschließend Formel-Chaos
angesagt ist. Die Formeln der kumulierten Spalte werden
unbrauchbar.

Hat jemand einen Lösungs-Ansatz ?

Wenn es unbedingt in Excel gelöst werden soll, dann würde ich
folgenden Weg vorschlagen:
eine Excel Datei lädt täglich die Daten aus der Access-DB, das
kann man über ein Makro, also auf Knopfdruck machen. Diese
Datei benutzt du täglich, die Daten werden also immer
überschrieben. Die Daten stehen dann immer in bestimmten
Zellen in der Excel-Datei.

Eine weitere xls sammelt die Tagessalden, das heißt jeden Tag
wird auch mit Hilfe eines Makro die erste Tabelle geöffnet,
die Daten werden kopiert und eingefügt, es wird somit eine
weitere Zeile gefüllt. In dieser Excel-Datei sind deine
Formeln für das Ermitteln der Werte.

PS
Ich habe schon beide Wege erprobt. Meine Erfahrung sagt,
Access ist der schnellere einfachere Weg, mit Access ist man
auf der sicheren Seite.

Gruß
Marion

Hallo jwd,

Ich erhalte die Daten über eine ODBC-Schnittstelle als Abfrage
nach Access; dort habe ich ich über die Funktion „Summe“ pro
Konto (es sind 5 Stk) pro Tag je einen Wert als Saldo aus Soll
und Haben - also eine Liste mit den 3 Spalten (Datum, Konto,
Betrag)und maximal 5 Zeilen pro Tag (sofern jedes Konto an dem
Tag auch eine Bewegung hatte).

Es muss keineswegs eine Excel-Lösung sein, nur weiß ich in
Access hier nicht weiter …

Endziel ist, dass man in Excel 1!! Datei öffnet, die mit einer
Access-Abfrage verknüpft ist, „!“ klickt und im Diagramm je 1
Kurve (als kumulierter Wert) pro Konto fortgeführt wird.

Welche Tabellen in der Access-DB enthalten die Daten (Feldname, Felddatentyp, Größe)? genau aufschreiben oder über ->Extras/Analyse/Dokumentierer die Objektdefinition als pdf generieren, speichern, hochladen - oder die Access-DB kopieren, die Daten aus der kopierten Access-DB löschen, die DB komprimieren und die leere(!) kopierte und komprimierte Access-DB mit den leeren(!) Tabellen und den darin enthaltenen Abfragen hochladen

Wie soll das Ergebnis in Excel genau aussehen?
Am besten skizzieren und ebenfalls hochladen.

Dummy-Datensätze wären gut, sind aber nich zwingend notwendig

Gruß
Marion

Hallo Reinhard,

habe eine xls-Tabelle mit dem Namen Abfrage erstellt;
in Tabelle 1 Deine 1. Tabelle mit Bewegungsdaten und in Tabelle 2
Deine 2. Tabelle mit einem Konto.
Code reinkopiert, aber …

folgende Fehlermeldung kommt :

„Laufzeitfehler 9
Index außerhalb des gültigen Bereiches“

Wenn ich dann Debuggen drücke (ohne zu wissen, was ich eigentlich wirklich tue), kommt dies:

Option Explicit

Sub Aktualisieren()
Dim Z, ZK, wsA
Set wsA = Worksheets(„Abfrage“) ==> ZEILE IST GELB HINTERLEGT
With wsA
.QueryTables(1).Refresh BackgroundQuery:=False
For Z = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets(„Konto“ & .Cells(Z, 2))
ZK = .Cells(Rows.Count, 1).End(xlUp).Row + 1
If wsA.Cells(Z, 3) 0 Then
.Cells(ZK, 1) = wsA.Cells(Z, 1)
.Cells(ZK, 2) = wsA.Cells(Z, 3)
.Cells(ZK, 3) = .Cells(ZK - 1, 3) + .Cells(ZK, 2)
End If
End With
Next Z
End With
End Sub

Grüße
jwd

Hallo Marion,

ich werde die Daten morgen zusammenstellen können.
Danke schon mal

viele Grüße
jwd

Hallo jwd,

Set wsA = Worksheets(„Abfrage“) ==> ZEILE IST GELB HINTERLEGT

deutet daraufhin, daß kein Blatt mit diesem Namen existiert, überprüfe mal die Schreibweise, Leerzeichen usw.

Und, habe noch mal nachgedacht, für jedes Konto ein eigenes Blatt ist natürlich übertrieben, kann man ja alle auf einem Blatt auflisten, dann gehen auch Diagramme einfacher.

Wenn du magst, bastle mal eine kleine Beispieldatei in Excel, wo auf einem Blatt später die eigentliche Abfrage geschieht, die kannst du weglassen, trage einfach manuell die daten so ein wie sie nach einer Abfrage aussehen würden/könnten.

Und auf einem anderen Blatt(Blättern) wie dann die Kontoführung aussehen sollte.

Hochladen kannst du das bei http://www.hostarea.de oder ähnlichen Anbietern.

Gruß
Reinhard

Hallo Reinhard,

dank´ Dir für Deine Mühe, ich sehe jedoch folgendes Problem:

Habe in Access eine Abfrage erstellt und bringe die Daten via Verknüpfung nach Excel.
Dort habe ich eine Spalte Summe und eine Kumulierte nach dem Motto, addiere mir Summe Vortage und aktueller Tag. Das geht solange bis ich neue Datensätze durch die Access-Excel-Verknüpfung aktualisiere. Denn dann wird der letzte Datensatz meiner Tabelle gelöscht und überschrieben mit dem 1. neuen hinüber geholten. Dadurch werden dann auch gleichsam die Formeln nach unten zerschossen.

Glaubst Du, dass VBA hier eine Lösung für hat ?
Wenn ja, dann fertige ich Dir kurz mal 2 Tabellchen

viele Grüße
jwd

Hi jwd,

Habe in Access eine Abfrage erstellt und bringe die Daten via
Verknüpfung nach Excel.
Dort habe ich eine Spalte Summe und eine Kumulierte nach dem
Motto, addiere mir Summe Vortage und aktueller Tag. Das geht
solange bis ich neue Datensätze durch die
Access-Excel-Verknüpfung aktualisiere. Denn dann wird der
letzte Datensatz meiner Tabelle gelöscht und überschrieben mit
dem 1. neuen hinüber geholten. Dadurch werden dann auch
gleichsam die Formeln nach unten zerschossen.

Glaubst Du, dass VBA hier eine Lösung für hat ?

ja, wo keine Formeln sind können keine zerschossen werden :smile:

Wenn ja, dann fertige ich Dir kurz mal 2 Tabellchen

Ja, mach das aml.

Gruß
Reinhard

Hi jwd,

von jwd
Datum: 28.1.2008 10:53 Uhr : Bewertungspunkte: (0) Geklickt: 15 mal
aus Forum Tabellenkalkulation, mehr Informationen
Hallo Marion,

ich werde die Daten morgen zusammenstellen können.
Danke schon mal

viele Grüße
jwd

hab hier leider nichts gelesen, so hab ich nur vermuten können, wie es aussehen soll.

http://www.gmx.de/mc/csyBZdLiozw8ZOzoGyZcXoUVZM7oix

Hinweis: Der Link für den Gastzugang zum GMX MediaCenter ist bis zum
29.2.2008 gültig.

Der erste Button ist nicht zu Ende vorbereitet (funktioniert), da mir die Info zur Quelle fehlt. Ich denke, die Daten sollten durch die DB importiert werden. Für die Weiterverarbeitung der Daten dient intern die tblQuelle. Du solltest aber nicht in diese Tabelle importieren bevor der Importvorgang vollständig angepasst ist (welche Spalte in welches Feld, …). Du kannst die Importfunktion aber testen, wenn du in eine neue Tabelle importierst. Zur Demo wie es jetzt funktioniert, habe ich ein paar Daten in die tblQuelle eingetragen.

Ich habe vierstellige Fantasiekonten gewählt aus dem Bereich 1200 bis 1699, die zu „Hauptkonten“ (1200,1300,1400,1500,1600) zusammengefasst werden. Diese Kontonummern müssen ebenfalls angepasst werden (fehlende Info).

Für eine direkte Ausgabe in Excel habe ich keinen Button vorbereitet, da diese Funktion in Access integriert ist (bei geöffneter Tabelle über ->Extras/Office-Verknüpfungen/Analysieren mit MS Excel) und du somit die Daten mühelos übertragen kannst.

PivotTable und PivotChart kannst du dir selbst passend einrichten, dazu die Feldliste einblenden und wie aus Excel bekannt, beliebige Felder an beliebige Stellen ziehen.

Prinzipiell empfehle ich Daten immer zu importieren und verarbeitete Daten, wenn nötig, extern, also außerhalb der DB z.B. als txt oder csv zu speichern. So kommt man immer an die Daten, auch wenn Access mal nicht verfügbar ist. In der DB ist deshalb kein internes Speichern der Daten vorgesehen (die Tabelle kann ja auch z.B. in Excel gespeichert werden).

Ich denke den Rest schaffst du auch, ansonsten gibt es hier das Access -Brett.

Bitte schick mir keine Dateien (siehe vita) und keine Mail ohne Ankündigung.

LG Marion

Hallo,

falls ein PC sich weigert (abhängig von den Sicherheitseinstellungen), die Datei nach dem Download zu öffnen:

Rechtsklick auf die Datei, Eigenschaften, Allgemein, Sicherheit, Zulassen, OK

Dann sollte es gehen.

LG
Marion

Lieber Reinhard,

karnevalsbedingt geht es erst wieder Mitte kommender Woche weiter und dann melde ich mich wieder .
Schon mal Danke + Alaaf
jwd

Liebe Marion,

ich hatte Deine vika nicht richtig gelesen, denn ichhabe Dir in der Tat die gewünschten Unterlagen geschickt; jedoch auf deine angegebene Mail-Adresse.

Dank´ Dir für Deine Mühe, aber karnevalsbedingt geht es erst wieder Mitte kommender Woche weiter und dann melde ich mich wieder .
Dennoch schon mal Danke + Alaaf
jwd

ok
deine e-mail-Adresse steht jetzt in der Liste mit den erlaubten Absendern, aber bitte keine Dateien mitschicken (den Status „Anlagen erlaubt“ hast du trotzdem nicht). Wenn erforderlich, gibt es hostera oder badongo oder ich schicke dir dann eine Kurzzeit-E-Mail-Adresse

LG
Marion

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]