Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1120to1124
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

Array Makro löscht einafch Zahlen

Array Makro löscht einafch Zahlen
Henning
Hallo zusammen,
im Anhang befindet sich ein Makro welches mir nach der Ausführung Zahlen löscht
https://www.herber.de/bbs/user/66546.xls
Das Makro summiert die Werte fehlerfrei hoch
Nur fehlen in einigen Spalten die Zahlen nach der Ausführung des Makros und zwar immer dann, wenn in der Spalte F "Budget" in einer Zelle kein Wert steht aber in den Spalten G, H oder I Werte in der gleiche Zeile sind.
Beispiel Spalte F Budget / Zeile 39 und 40 stehen keine Werte in der Zeile stehen aber in der Spalte G Werte.
Diese werden anschließend nicht mehr dargestellt komischerweise stimmt die Summe aber.
Kann mir jemand helfen?
Gruß
Henning

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Bitte Link zur VORGESCHICHTE angeben !
12.12.2009 14:21:20
NoNet
Hallo Henning,
wenn Du schon unbedingt einen neuen Thread eröffnest, anstatt im ursprünglichen Thread zu bleiben, dann gib doch bitte den Link zur "Vorgeschichte" an, damit andere Helfende sich davon ein Bild machen können :
https://www.herber.de/forum/messages/1123352.html
Beim ersten drüberschauen, scheint es, als würden die Zahlen gelöscht werden, bei denen in Budget kein Wert enthalten ist. Weshalb diese Werte gelöscht werden, überblicke ich aber gerade nicht...ich schau mal weiter rein...
Gruß, NoNet
AW: Array Makro löscht einafch Zahlen
12.12.2009 14:24:56
Nepumuk
Hallo,
das Makro löscht keine Werte weil es das lustig findet, sondern du hast dem Makro gesagt es soll die Werte löschen !!!
Ich hab einig Zeit benötigt, diesen verquerten Code zu durchschauen. Du suchst nach dem PSP-Element mit einem zusätzlichen Punkt und Stern hinten dran, wenn in der Budget-Spalte kein Wert steht.
Nehmen wir mal die Zeile 23 als Beispiel. PSP-Element K.07071.02.1.002 mit dem Anhang .*, also K.07071.02.1.002.* gibt es nicht. Also sind alle Werte 0 und dann löschst du mit If Arr(L, 3 + lngS) = 0 Then Arr(L, 3 + lngS) = "" die 0 aus dem Array. Damit verschwinden auch deine Werte.
Gruß
Nepumuk
Anzeige
@Nepumuk : Aber warum ALLE Werte ?
12.12.2009 14:31:03
NoNet
Hallo Nepumuk,
der Code ist eine Cooperation von Ransi (?) und einer Erweiterung von mir (s.o. : Link zur "Vorgeschichte").
die entscheidenden Zeilen sind doch wohl (hier mit Buchstaben anstatt "" belegt) :
            If Val(Arr(L, 3 + lngS)) = 0 Then Arr(L, 3 + lngS) = "a"
If Val(Arr(L, 4 + lngS)) = 0 Then Arr(L, 4 + lngS) = "b"
If Val(Arr(L, 5 + lngS)) = 0 Then Arr(L, 5 + lngS) = "c"
If Val(Arr(L, 6 + lngS)) = 0 Then Arr(L, 6 + lngS) = "d"

Da aber jedes ARRAY-Element einzeln überprüft wird, sollten eigentlich nur die "leeren" Zellen ode r Nullwerte mit "" überschrieben werden und nicht ALLE Zellen, wenn Arr(L, 3 + lngS)=0 ist !!?!?
Das bereitet mir gerade etwas Kopfzerbrechen....
Gruß, NoNet
Anzeige
AW: @Nepumuk : Aber warum ALLE Werte ?
12.12.2009 14:43:38
Nepumuk
Hallo NoNet,
hab ich doch geschrieben. Der Suchbegriff wird nicht gefunden, darum wird in den vier Spalten des Arrays eine 0 eingetragen die dann gelöscht wird. Würde an Stelle von "K.07071.02.1.002.*" nach "K.07071.02.1.002*" gesucht, würde die Werte erhalten bleiben. Allerdings würden dann die Summen bis Zeile 10.014 runtergeschrieben werden, denn wenn kein PSP-Element mehr kommt, dann sucht das Makro nach "*" und findet damit alles.
Ich hab es ja auch als ziemlich verquerten Code bezeichnet. Denn wer macht ein Array schon größer als die Tabelle mit Daten.
Gruß
Nepumuk
AW: @Nepumuk : Aber warum ALLE Werte ?
12.12.2009 17:33:39
ransi
HAllo
In der "Urschleimversion" gab es bis die auf die Zellen in denen summiert werden sollte keine leeren Zellen.
Genau dafür war der Code geschrieben.
Jetzt sind zusätzliche leere Zellen im Listenbereich dazu gekommen. Da muss man natürlich nacharbeiten.
Einfach vor dem Einfügen der Suumewenn() abfragen ob die Zelle leer ist. Wenn ja-->Summewenn() wenn nein -->Nix machen
Dann wird auch nichts mehr überschrieben.
Option Explicit
Sub VariableSpalten()
Dim Arr As Variant, lngLS As Long, lngS As Long
Dim rngBereich As Range, rngPSP As Range
Dim L As Long

lngS = Application.Match("Budget", Rows("14:14"), 0) - 5 'Sucht "Budget" in Zeile 15
lngLS = Cells(14, Columns.Count).End(xlToLeft).Column

Set rngPSP = Range("C15").CurrentRegion.Offset(1).Resize(10000, 1)
Set rngBereich = Range("C15").CurrentRegion.Offset(1).Resize(10000, lngLS - 1)
Arr = rngBereich

For L = 1 To UBound(Arr)
    If Arr(L, 3 + lngS) = "" Then
        If Arr(L, 3 + lngS) = "" Then Arr(L, 3 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
            Range("E15:E10000").Offset(, lngS))
        If Arr(L, 4 + lngS) = "" Then Arr(L, 4 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
            Range("F15:F10000").Offset(, lngS))
        If Arr(L, 5 + lngS) = "" Then Arr(L, 5 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
            Range("G15:G10000").Offset(, lngS))
        If Arr(L, 6 + lngS) = "" Then Arr(L, 6 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
            Range("H15:H10000").Offset(, lngS))
        If Arr(L, 3 + lngS) = 0 Then Arr(L, 3 + lngS) = ""
        If Arr(L, 4 + lngS) = 0 Then Arr(L, 4 + lngS) = ""
        If Arr(L, 5 + lngS) = 0 Then Arr(L, 5 + lngS) = ""
        If Arr(L, 6 + lngS) = 0 Then Arr(L, 6 + lngS) = ""
    End If
Next
'Range("C15:H10000") = Arr
rngBereich = Arr
End Sub


ransi
Anzeige
Mal Licht ans Fahrrad gemacht...
12.12.2009 17:53:51
ransi
HAllo NoNet
Die "0" in den fraglichen Zellen wird hier gesetzt,
If Arr(L, 3 + lngS) = 0 Then Arr(L, 3 + lngS) = ""
aber nur weil dort vorher mit
If Arr(L, 3 + lngS) = "" Then
Arr(L, 3 + lngS) = WorksheetFunction.SumIf(rngPSP, Arr(L, 1) & ".*", _
Range("E15:E10000").Offset(, lngS))
die "=summewenn()" reingeschrieben wurde. Und die gibt nunmal 0...
Zur Entsthungsgeschichte des Codes:
In der allerersten Version in der der Code lief, gab es in "Budget" keine Leeren Zellen ausser denen in die die Summen rein sollten.
Dann läuft der Code schmerzfrei.
ransi
Anzeige
und nun ......?
14.12.2009 08:00:38
Henning
Guten Morgen, zusammen,
erst einmal vielen Dank für eure Hilfe.
Aber, gibt es eine Lösung?
Ich kann euern Erläuterungen nicht folgen :-( sorry.
ransi hat recht, in der ersten Version lief alles wunderbar.
Nur haben sich jetzt die Anforderungen dahingehend geändert, dass es nun in der Spalte auch leere Zellen geben kann.
Schönen Start in die Woche
Beste Grüße
Henning

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige