Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Lösungsweg gesucht für Bezugsfehler

Lösungsweg gesucht für Bezugsfehler
11.06.2020 00:30:58
Wolfgang
Hallo zusammen,
ich habe ein verzwicktes Problem mit einer Datenauswertung.
Meine Lösungen sind immer an Kleinigkeiten gescheitert, vielleicht gibt es auch eine ganz andere Lösung.
Ich möchte die Leistungsdaten eines Wechselrichters mit zwei Strängen auswerten.
Dafür lade ich eine log-Datei in ein sheet und übertrage die Daten, je nachdem was für ein Datum eingetragen wird, in ein Diagramm. So weit so gut, das funktioniert.
Die log-Datei enthält in regelmäßigen Abständen leere Zeilen. Diese Zeilen werden mit vba gelöscht, weil sie im Diagramm unzutreffend sind.
Die Daten liegen nur für beiden einzelnen Stränge vor, ich möchte aber die Summe davon ausrechnen. Da auf diesem sheet (datencopy) der Datenimport geschieht, mache ich das auf einem anderen sheet (Rechnungen).
Das Problem: beim Löschen der leeren Zeilen entsteht ein Bezugsfehler "#BEZUG!", sowohl bei normalem Bezug als auch bei festem Bezug mit $. Jetzt wollte ich in dem sheet (Rechnungen) mit den Bezugsfehlern diese Zeilen auch löschen, aber vba findet die Zellen nicht. Es funktioniert bis "#Bezug" aber "#Bezug!" mit Ausrufezeichen geht nicht mehr.
Als Alternative habe ich die Bezüge INDIREKT definiert auf ein sheet (test) was leer ist und dann mit einer einzigen Eintragung in Zelle A1 wieder auf das richtige sheet mit den gelöschten Zeilen verwiesen.
Das funktioniert auch und ich wäre fertig, aber bei der INDIREKT Funktion kann ich die Zeilen nicht so kopieren, dass die Zeilennummer von Excel hochgezählt wird. Handeingabe unmöglich, es werden ca. 100.000 Zeilen benötigt.
Jetzt könnte man die Zellen wahrscheinlich mit vba automatisch beschreiben lassen, es wird nun aber alles sehr kompliziert, obwohl die Aufgabenstellung eigentlich einfach ist.
Kann mit jemand dabei folgen und hätte ein Lösungsvorschlag?
z.B. mit vba diese Formel in die Zellen A7 bis A100000 schreiben lassen
=INDIREKT("'"&$A$1&"'!$D7")+INDIREKT("'"&$A$1&"'!$I7")
bis
=INDIREKT("'"&$A$1&"'!$D100000")+INDIREKT("'"&$A$1&"'!$I100000")
Vielleicht geht es auch so, dass das Diagramm die Summe bildet. Es wird dynamisch über den Namensmanager beschrieben. Mein Versuch, die Namen, in denen Datenreihen stehen, zu addieren schlug fehl.
Die Datei habe ich hochgeladen, nein geht nicht.
In dieser Datei geht alles, weil ich das sheet "Berechnungen" erst erstellt habe, nachdem die Zeilen in "datencopy" schon gelöscht wurden. Es sollen aber andere log-Dateien geladen werden können.
Gruß
Wolfgang

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lösungsweg gesucht für Bezugsfehler
11.06.2020 07:48:48
ralf_b
1. kannst du erst nach dem löschen deiner zeilen die daten aufbereiten für die berechnung? also damit wäre ein bezugsproblem vom tisch.
2. ActiveCell.FormulaR1C1 = _
"=INDIRECT(""'""&R1C1&""'!$D7"")+INDIRECT(""'""&R1C1&""'!$I7"")"
das macht der Makrorekorder aus deiner indirektformel. kannst du dann in vba verwenden
3. arbeitest du lieber mit formeln oder kann das ganze auch in vba geschehen?
AW: (D)eine Beispieldatei könnte hilfreich sein...
11.06.2020 08:13:33
neopa
Hallo Wolfgang,
... es muss nicht das Original sein. Die ist offensichtlich sowieso zu groß und lässt sich deshalb hier nicht einstellen. Reduziere diese in einer Dateikopie auf auf ein notwendiges Minimum und erkläre dafür Deine Probleme bei der Realisierung Deiner Zielstellung.
Auf jeden Fall lässt sich schon jetzt sagen, dass es normalerweise nicht notwendig ist, INDIREKT() einzusetzen, nur weil leere Datenzeilen gelöscht werden. Ein Bezugsfehler kann nur auftreten, wenn die Auswertungsformel nicht den Anforderungen gemäß definiert ist.
Und Summen mit einem Diagramm zu bilden ist mit Excel nicht möglich, dies wird nach wie vor durch Auswertung der Zellendaten mit entsprechenden Funktionen vorgenommen.
Gruß Werner
.. , - ...
Anzeige
AW: Lösungsweg gesucht für Bezugsfehler
11.06.2020 12:28:43
Wolfgang
Hallo Werner,
danke schon einmal für den Hinweis, dass es mit den Diagrammen nicht geht.
Das spart einem viel Arbeit dort nicht weiter zu suchen.
Die Datei habe ich hochgeladen.
Um das Auszuprobieren wird noch die neue log Datei benötigt. Auf dem Blatt "datencopy" muss diese über den Befehlsbutton eingelesen werden, anschließend Button "Leere Zeilen löschen" benutzen.
Auf dem Blatt "Rechnungen" gibt es dann immer dort Bezugsfehler, wo eine Zeile im Bezug gelöscht wurde.
Ist eigentlich klar, aber nach dem Löschen ist die Zeile ja wieder da.
Im Diagramm gibt es das Problem nicht.
Auswertung:
https://www.herber.de/bbs/user/138220.xlsm
log-Datei
https://www.herber.de/bbs/user/138223.xlsx
Anzeige
AW: nutze INDEX() ...
11.06.2020 13:24:56
neopa
Hallo Wolfgang,
... da ich mich grundsätzlich aus VBA-Lösungen heraushalte und demzufolge auch VBA-Code aus heruntergeladenen Dateien deaktiviere und die jeweilige Datei als xlsx-Datei speichere, kann ich meine Einschätzung nur an Hand dessen vornehmen.
Ich meine, wen Du die Formel in Rechnungen!A7 wie folgt umdefinierst:
=INDEX(datencopy!D:D;ZEILE())+INDEX(datencopy!I:I;ZEILE())
und analog in B7: =INDEX(datencopy!A:A;ZEILE())/86400+25569,0833333333
sollte da kein #BEZUG! Fehler mehr auftreten.
Gruß Werner
.. , - ...
AW: nutze INDEX() ...
11.06.2020 14:26:01
ralf_b
wenn du deine leerzeilen einfach vor dem kopieren löschst ist alles schick.
Set QWS = QWB.Worksheets("log.csv-3")   ' Quelle
For i = Cells(Rows.Count, 6).End(xlUp).Row To 6 Step -1
If Cells(i, 6) = "" Then Rows(i).Delete
Next i
QWS.Cells.Copy ZWS.Cells(1, 1)                ' oder before

Anzeige
AW: Lösungsweg gesucht für Bezugsfehler
12.06.2020 23:28:28
Wolfgang
Hallo Werner,
hallo Ralf,
mit INDEX() funktioniert das einwandfrei.
Vielen Dank.
Bin jetzt durch mit diesem Thema "Excel Anzeige für den Wechselrichter" und höre jetzt auf.
Was eigentlich nur eine fixe Idee war, hat mich tagelange Arbeit gekostet, aber mit gutem Ende.
Ohne Kopieren aus anderen Foren und der Hilfe hier, wäre das nicht gegangen.
Vielen Dank nochmal, bleibt gesund!
Wolfgang

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige