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

Frage zur Verarbeitungslogik

Frage zur Verarbeitungslogik
22.07.2014 19:18:58
Florian
Hallo,
Beispieldatei:
https://www.herber.de/bbs/user/91639.xlsx
wir stehen vor folgendem Problem bzw. Herausforderung ;-)
Wir erhalten von unserer IT Excel-Sheets mit Berichtsinformationen (vereinfacht dargestellt im Blatt "Report").
Die Daten dieses Arbeitsblattes werden vom Host ins Excel transferiert, es enthält NUR Zahlenwerte (keine Formeln).
Zusätzlich könnte uns die IT in einem zusätzlichen Blatt noch folgende Informationen mitliefern (s. Blatt "ZE"):
Die Zeilenermittlung von Summen- bzw. Zwischensummen (also z.B. ermitteln sich die Gesamtkosten durch Addition der Zeilen 3000 und 4000).
Diese Zeilenermittlung wird jedoch als eine Zeichenkette geliefert.
Um mit diesen Berichten im Excel auch weiterarbeiten zu können würden wir gerne per Makro die festen Zahlenwerte in den Summenzeilen durch Formeln ersetzen.
Wie sollten wir idealerweise mit dieser Zeichenkette der Zeilenermittlung umgehen?
Theoretisch können hier bis zu 100 Zeilenverknüpfungen stehen.
Jede Zeile in eine Variable separieren? (scheint mir sehr umständlich).
Dann die jeweiligen Zeilen suchen und ihre Zell-Adresse in die Formel übernehmen?
Wäre super wenn mir hier ein erfahrener VBA-Programmierer in puncto Verarbeitungslogik etwas auf die Sprünge helfen könnte.
Im Moment habe ich noch eher das Gefühl, das wir in der FA mit dieser Anforderung etwas überfordert sind :-(
Wie gesagt, das anhängende Bsp. ist sehr vereinfacht aufgebaut, zeigt aber die Grundproblematik ganz gut.
Vielen Dank im Voraus für eure Tipps!
Florian

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Codevorschlag
23.07.2014 00:20:43
Erich
Hi Florian,
warum stehen in Report!B:B Texte (bestehend aus 4 Ziffern), in ZE!A:A aber Zahlen?
Besser wäre, wenn da einheitlich Texte stünden (auch wg. der führenden Nullen...)
Probier mal

Option Explicit
Sub SummenFormeln()
Dim arW, arS, ii As Long, jj As Long, arP, oDic As Object, rngU As Range
Set oDic = CreateObject("Scripting.Dictionary")
With Sheets("ZE")
arS = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 2)
End With
With Sheets("Report")
arW = .Cells(3, 2).Resize(.Cells(.Rows.Count, 2).End(xlUp).Row - 2)
For ii = 1 To UBound(arW)
oDic(arW(ii, 1)) = ii + 2
Next ii
For ii = 1 To UBound(arS)
arS(ii, 1) = arS(ii, 1) & ""  ' überflüssig, wenn in ZE-Spalte A Texte stehen
arP = Split(arS(ii, 2), "+")
Set rngU = .Cells(oDic(arP(1)), 3)
For jj = 2 To UBound(arP)
Set rngU = Union(rngU, .Cells(oDic(arP(jj)), 3))
Next jj
.Cells(oDic(arS(ii, 1)), 3).Formula = "=SUM(" & rngU.Address(0, 0) & ")"
Next ii
End With
End Sub
Trifft es das?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
OT: Hallo, Erich!
23.07.2014 00:25:05
Luc:-?
Hatte mich schon gefragt, wo du abgeblieben bist… ;-)
Gruß, Luc :-?

oT. schön ...
23.07.2014 09:27:14
der
Hallo Erich,
... :-) Dich nach doch recht langer Zeit wieder zu lesen.
Gruß Werner
.. , - ...

AW oT @Luc und Werner: Danke für die Grüße! :-)
25.07.2014 11:47:58
Erich

AW: Codevorschlag
23.07.2014 12:36:39
Florian
Hallo Erich,
vielen Dank erstmal für dein Code-Beispiel! Da steckt ja ganz schön was drin ... ;-))
Das mit dem Zahlenformat im Blatt "ZE" ist lediglich meiner schlampigen Beispielerfassung geschuldet. Hier wird die Zeilennummer ebenfalls als "String" abgelegt.
Leider kann ich bei mir das Makro nicht komplett durchlaufen lassen, da ich in der Code-Zeile
Set rngU = .Cells(oDic(arP(1)), 3)

einen Laufzeitfehler 1004 "Anwendungs- oder objektdefinierter Fehler" erhalte.
Leider habe ich noch überhaupt keine Erfahrung mit dem Objekt Scripting.Dictionary und weiß nicht so recht, welche Rolle es hier spielt (es speichert die Excel Zeile der jew. Berichtszeile?)
Wenn ich das Makro mal lauffähig bekomme, kann ich über Debug sicher noch die ein oder andere Erkenntnis gewinnen.
Gruß
Florian

Anzeige
AW: Codevorschlag
23.07.2014 13:10:57
Florian
O.T test

Debuggen
23.07.2014 16:53:58
Erich
Hi Florian,
die Rolle des Dictionary hast du genau erkannt: Es enthält zu jedem Eintrag die Zeilennummer in "Report".
Das mit dem Debuggen meine ich anders: Nicht, wenn das Makro mal lauffähig ist, sondern gerade wenn es fehlerhaft ist,
ist der Debugger hilfreich.
Wenn der Fehler auftritt, klick bitte mal auf Debuggen, dann wird dir der Code angezeigt.
Die falsche Zeile ist markiert.
Wenn du jetzt den Mauszeiger über "ii" hältst, wird dir der aktuelle Wert von ii angezeigt.
Wenn du den Mauszeiger über "arP" (als Teil von "arP(1)") hältst, wird dir der aktuelle Wert von arP(1) angezeigt -
oder ein Fehler.
Wenn du den Mauszeiger über "oDic" (als Teil von "oDic(arP(1))") hältst, wird dir der aktuelle Wert von oDic(arP(1)) angezeigt - oder ein Fehler.
Welche Werte haben im Fehlerfall ii, arP(1) und oDic(arP(1)) ?
Ist ii=1 oder, wenn ii größer ist - was ist in dieser Zeile anders als in den vorherigen?
In arP(1) sollte der Wert nach dem ersten + stehen.
Eine Voraussetzung muss erfüllt sein:
Alle (vierstelligen) Werte in ZE!A:B müssen in der Liste in Report!B:B vorkommen. Das Makro prüft das jetzt nicht.
Du kannst dir auch im Fehlerfall mit Ansicht - Lokal-Fenster die Werte der Variablen im Modul anzeigen lassen.
Ist auch oft hilfreich.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Debuggen
23.07.2014 17:43:40
Florian
Hallo Erich,
der Fehler tritt bereits beim ersten Durchlauf der Schleife auf.
ii = 1 - korrekt
arP(1) = "1000" - korrekt
oDic(arP(1)) = Leer ...
Die Zeilennummern unter "ZE" sind immer auch in "Report" vorhanden.
Ich habe mein Test-Excel nochmal hochgeladen!
https://www.herber.de/bbs/user/91679.xlsm
Vielen Dank!
Florian

Zahl oder Text?
23.07.2014 21:24:11
Erich
Hi Florian,
da hast du gleich zwei Dinge eingebaut:
Woher kommt jetzt die neue Spalte A in Report? Jetzt stehen die Keys plötzlich in Spalte C statt B.
Die "Texte" in ZE!A:A sehen nur aus wie Text (linksbündig angezeigt).
Du hast das Zahlenformat der Zellen auf Text gestellt. So weit so gut. Aber:
Die Formatänderung einer Zelle ändert nichts am Wert der Zelle - da stehen immer noch Zahlen drin!
Schreib mal in D1 die Formel =ISTTEXT(A1) oder =ISTZAHL(A1)
Wenn du die Werte neu eingibst, werden Texte daraus - weil das Format auf Text steht.
Du kannst auch so aus einer Zahl in A1 einen Text machen, etwa in D1: =A1&""
Hier habe ich die Spaltenangaben für die Keys und Formeln mal in Konstanten gesteckt,
zum leichteren anpassen:

Sub SummenFormeln()
Dim arW, arS, ii As Long, jj As Long, arP, oDic As Object, rngU As Range
Const spKey As Long = 3   ' Spalte mit den Keys in Report
Const spFor As Long = 4   ' Spalte für die Formeln in Report
Set oDic = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Sheets("ZE")
arS = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 2)
End With
With ThisWorkbook.Sheets("Report")
arW = .Cells(3, spKey).Resize(.Cells(.Rows.Count, 2).End(xlUp).Row - 2)
For ii = 1 To UBound(arW)
oDic(arW(ii, 1)) = ii + 2
Next ii
For ii = 1 To UBound(arS)
arS(ii, 1) = arS(ii, 1) & ""  ' überflüssig, wenn in ZE-Spalte A Texte stehen
arP = Split(arS(ii, 2), "+")
Set rngU = .Cells(oDic(arP(1)), spFor)
For jj = 2 To UBound(arP)
Set rngU = Union(rngU, .Cells(oDic(arP(jj)), spFor))
Next jj
.Cells(oDic(arS(ii, 1)), spFor).Formula = "=SUM(" & rngU.Address(0, 0) & ")"
Next ii
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Zahl oder Text?
23.07.2014 23:29:11
Florian
Hallo Erich,
Asche auf mein Haupt ... sorry das war mein Fehler! :-(
Ist echt unglaublich, das mit dieser kurzen Code-Strecke so hinzukriegen !
Ich werde das morgen mal an einem echten Bericht versuchen umzusetzen.
Zwei Dinge muss ich da noch irgendwie hinbekommen.
Bei den Zeilenermittlungen gibt es auch Subtraktionen. Daher muss ich das Vorzeichen noch irgendwie mit berücksichtigen.
Die KSt-Verantwortlichen erhalten im "Report" für jede ihrer Kostenstellen einen Bericht (im Arbeitsblatt hintereinander aufgelistet).
Aber step by step ...
Du hast mir wirklich sehr geholfen! Wenn ich auch immer noch nicht alles 100% durchschaue, habe ich wieder einiges gelernt.
Gruß
Florian
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige