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

SUM in erste leere Zeile von Oben WENN

SUM in erste leere Zeile von Oben WENN
07.08.2008 15:46:53
Oben
Hallo ich mal wieder :)
Ich bin schon gut vorangekommen dank Eurer Hilfe. Jetzt ist folgende Ausgangssituation
SPALTE A | SPALTE B| SPALTE C | SPALTE D................
1 300 | 1234 | 2007-11-01 | 21043804
2 300 | 1234 | 2007-12-01 | 15600489
3
4
5
6
7 XT | 56789 | 2007-01-01 | 20359429
8 XT | 56789 | 2007-02-01 | 18389162
9 XT | 56789 | 2007-03-01 | 20359429
10 XT | 56789 | 2007-04-01 | 19702674
11 XT | 56789 | 2007-05-01 | 20359429
12 XT | 56789 | 2007-06-01 | 20772015
13
14
15
16
17 181 | 98769 | 2007-07-01 | 21059429
18 181 | 98769 | 2007-08-01 | 20406036
19 181 | 98769 | 2007-09-01 | 21412842
20
21
22
23
......................
......
....
Jetzt will ich gerne in die jeweils 1. leere Zeile von oben nach ungen springen, und dann SUMs bilden und dann nur von den Werten die sich wiederholen bzw. der count von der spalte A zwischen den leerzeilen größer 3 sind
SPALTE A | SPALTE B| SPALTE C | SPALTE D................
1 300 | 1234 | 2007-11-01 | 21043804
2 300 | 1234 | 2007-12-01 | 15600489
3
4
5
6
7 XT | 56789 | 2007-01-01 | 20359429
8 XT | 56789 | 2007-02-01 | 18389162
9 XT | 56789 | 2007-03-01 | 20359429
10 XT | 56789 | 2007-04-01 | 19702674
11 XT | 56789 | 2007-05-01 | 20359429
12 XT | 56789 | 2007-06-01 | 20772015
13 SUMs | =SUM(B7:B12)| |
14
15
16
17 181 | 98769 | 2007-07-01 | 21059429
18 181 | 98769 | 2007-08-01 | 20406036
19 181 | 98769 | 2007-09-01 | 21412842
20 181 | 98769 | 2007-08-01 | 20406036
21 SUMs | =SUM(B17:B20) | |
22
23
24
......................
......
....
Die Bereiche für die Summenbildung richten Sich nach den Wiederholungen und eben nur wenn mehr als 3 Wiederholungen in Spalte A
Bis gehe ich das Sheet durch und immer wenn eine neuer Wert in A ist, der nicht dem Vorgänger entspricht mach in 4 freie zeilen rein.
JEMAND EINEN TIP ODER EINE LÖSUNGSIDEE?!?!
Mit
Dim Loletzte As Long
Loletzte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
komme ich net weit, er macht das einmal und dann habe ich immer einen festen Wert in den die AkticeCell sich pro Sheet befindet, er sucht also nicht immer von oben nach unten die erste neue bzw. leere Zeile
Grüße
Lauren

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SUM in erste leere Zeile von Oben WENN
08.08.2008 01:49:08
Oben
Hi
vielleicht ein etwas unkonventioneller Lösungsansatz,
aber probiers mal aus (so würde ich prinzipiell die Aufgabe ohne VBA lösen)

Sub test()
With Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)


da SummeWenn und ZählenWenn verwendet wird, ist diese Lösung bei grösseren Datenmengen vielleicht etwas zäh, aber bei kleineren Tabellen sollte es gehen.
Gruß, Daniel

AW: SUM in erste leere Zeile von Oben WENN
08.08.2008 10:51:00
Oben
Guten Morgen Daniel,
wir kommen der sache schon näher :)
Ich verstehe deine Formel jetzt nicht so ganz damit ich sie selber anpassen könnte und zwar muss ich folgendes Berechnen
WENN B2 bis erste leere Zeile mehr als 3 Zeilen
DANN schreib in die erste Freie Zeile SUMs in Spalte A (DAS IST JETZT SCHON SO MIT DEINER FORMEL) und berechne die Summe von E2 bis erste leere Zeile in Spalte E und schreibe die Summe in die erste freie Zelle in E von oben nach unten gesehen und das selbe in Spalte G und I
Im Grunde stimmt das was Du mir geschickt hast schon, muss nur noch eben angepasst werden welche Summen an welcher Stelle gebildet werden und mit welchen Bereichen.
Vielen Danke schonmal!

Anzeige
AW: SUM in erste leere Zeile von Oben WENN
08.08.2008 12:27:47
Oben
Hi
mal ne Frage, in deinem Beispiel war die Summe für Spalte B gefordert., dafür habe ich mein Makro geschrieben. Wenn du eigentlich die Summen für andere Spalten benötigst, warum hast du das nicht angegeben?
Je besser das Beispiel der Realität entspricht, um so besser wird die Antwort.
btw noch nie Frage: die ID-Nummer in Spalte A ist doch immer vorhanden (dh. bei allen Zeilen, die zusammenaddiert werden sollen, steht in Spalte A die gleiche Kennung davor)?
das war in deinem Beispiel so angegeben und darauf basiert die Formel.
zu deiner Frage:
wenn du die geleiche Art der Summierung noch für ander Spalten benötigst, dann musst den Code einfach wiederholen und nur in der Zeile mit WITH die Spalte entsprechend anpassen: "With Range("E1:E"..."
die Formel muss eigentlich nicht verändert werden.
das Einfügen der SUMs darf dann aber erst bei der Letzten Codewiederholung erfolgen, da sonst die Summenformel nicht richtig funktioniert, der Parameter in .Offset muss dann so angegeben werden, daß die Werte in Spalte A geschreiben werden (dh wenn bei WITH die Spalte E angegeben ist, dann -4, bei F -5 usw)
Gruß, Daniel

Anzeige
AW: SUM in erste leere Zeile von Oben WENN
08.08.2008 13:20:15
Oben
PERFEKT!
Es tut jetzt so wie es soll und bildet die summen
jetzt muss ich noch eine erweiterung haben und dann mein altes makru darauf anpassen und das Thema wäre für mich durch :)
Ich berechne jetzt ja die SUMs für die jeweiligen Spalten die ich benötige.
Was noch zu tun ist, die SUM durch die Anzahl der gebildeten werte zu teilen und dann mal 12 zu nehmen also auf ein Jahr hochzurechnen.
Beispiel:

With Range("E1:E" & Cells(Rows.Count, 1).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)


Hier dann die Summe durch die anzahl der Zeilen teilen die bei der Summenbildung beteiligt waren und dann eben mal 12 nehmen. Wenn es schon 12 sind so belassen natürlich.
Ich lasse beim lauf des Makros jeweils eine Spalte für "anual" also den Jahresbedarf einfügen neben die jeweiligen Monatswerte also ist es super wenn gleich neben dem Summenwert der gebildet wird eben der Jahreswert noch steht.
Da alles kleiner 3 keine summe hat fallen die somit aus dem rahmen und ich bilde ganz am schluss in der letzten Zeile die Summen von anual und hätte somit dann die Jahreswerte für jeweiliges Produkt.
VIELEN DANK!!!!!

Anzeige
AW: SUM in erste leere Zeile von Oben WENN
08.08.2008 15:20:13
Oben
Hi
was immer du tun willst, mach es
die Formeln kannst du ja auch außerhalb von VBA direkt in Excel entwickeln und dann im Direktfenster mit
"?selection.formulaR1C1" anzeigen lassen um dann den Formeltext ins Makro zu übernehmen.
das makro macht eigentlich nichts anderes als die Formel in die leeren Zellen zu schreiben und dann diejenigen Formeln zu löschen, die als Ergebnis WAHR haben (also alle, die nicht direkt unter werten stehen oder wo es weniger als 3 Werte sind)
ich sehe die Frage damit als Beantwortet an.
Gruß, Daniel

AW: SUM in erste leere Zeile von Oben WENN
08.08.2008 16:26:00
Oben
Jup habe die Summen jetzt dort wo ich sie haben will,

.SpecialCells(xlCellTypeBlanks).Offset(0, 1).FormulaR1C1 = "=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)


einfach eine Zelle weiter rechts. Aber


.SpecialCells(xlCellTypeFormulas, 4).ClearContents


findet die Zellen nicht mehr zum löschen und sagt jetzt unter der Summe immer WAHR WAHR.
Das mit dem ClearContent sucht jetzt an der falschen stelle nehme ich mal an es hat sich um 1 verschoben nach rechts aber wie teile ich es diesem ClearContents mit?!?!
Vielen Dank und viele Grüße

Anzeige
AW: SUM in erste leere Zeile von Oben WENN
08.08.2008 17:38:00
Oben
Hi
sorry, aber Fehlersuche macht nur sinn mit dem ganzen Code und der Datei dazu.
Gruß, Daniel

AW: SUM in erste leere Zeile von Oben WENN
11.08.2008 13:58:38
Oben
Hallo Daniel,
hoffe Du hattest ein schönes WE!
Also folgender Code gibt das aus

With Range("D2:D" & Cells(Rows.Count, 2).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)


Spalte A| Spalte B| Spalte C| Spalte D| Spalte E | Spalte F | Spalte G | Spalte H|
123| 1501| 2007-08-01| 10593715| |5383815 | |54224,30063
123| 1501| 2007-09-01| 11827745| |5675522 | |62672,48442
123| 1501| 2007-10-01| 11651245| |5611803 | |59530,86469
123| 1501| 2007-11-01| 11664725| |5571052 | |99989,58675
123| 1501| 2007-12-01| 9258420 | |4582368 | |167174,6278
| | SUMs |137613000| | | |
Da dies ja das ganze Tabellenblatt durchgeht, hätte ich am schluss die SUM in den Spalten eins weiter rechts, dass ich ganz am schluss einfach einmal SUM machen kann von den Werten für den der Fall größer 3 eingetroffen ist und die SUMs gebildet worden ist. Damit das leicht von statten geht, hätte ich die Rechnung für SUMs (137613000) in der selben Zeile aber eine Spalte weiter in E.
Wenn ich jetzt folgendes mache


With Range("D2:D" & Cells(Rows.Count, 2).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).Offset(0,1).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)


Findet er die Zellen für ClearContents (.SpecialCells(xlCellTypeFormulas, 4).ClearContents / .SpecialCells(xlCellTypeFormulas, 1).Offset(0, -1).Value = "SUMs") und für SUMs nicht mehr und unter dem errechneten Wert also SUMs steht dann immer WAHR, WAHR
das ganze sieht dann so aus
Spalte A| Spalte B| Spalte C| Spalte D| Spalte E | Spalte F | Spalte G | Spalte H|
123| 1501| 2007-08-01| 10593715| |5383815 | |54224,30063
123| 1501| 2007-09-01| 11827745| |5675522 | |62672,48442
123| 1501| 2007-10-01| 11651245| |5611803 | |59530,86469
123| 1501| 2007-11-01| 11664725| |5571052 | |99989,58675
123| 1501| 2007-12-01| 9258420 | |4582368 | |167174,6278
| | | |137613000| | |
| | | |WAHR| | |
| | | |WAHR| | |
Vielen Dank für die Hilfestellung

Anzeige
AW: SUM in erste leere Zeile von Oben WENN
11.08.2008 14:49:30
Oben
HAT SICH ERLEDIGT :)

With Range("D2:D" & Cells(Rows.Count, 1).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).Offset(0, 1).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)


dann passt es genau so wie ich es haben will :)

AW: SUM in erste leere Zeile von Oben WENN
11.08.2008 15:05:00
Oben
Hi
wenn du ein Problem hast, dann bitte immer vollständige Datei hochladen, mit Code und Daten.
wenn ich das erst wieder selbst zusammen bauen muss, dann könnte ich die Lust verlieren ;-)
ich vermute mal, daß du den .OFFSET-Befehl in die WITH-Definition mit aufgenommen werden muss, bzw dort der Zellbezug von D:D auf E:E zu ändern ist.
Gruß, Daniel

Anzeige
AW: SUM in erste leere Zeile von Oben WENN
11.08.2008 15:33:12
Oben
Hallo Daniel,
wie und wo kann ich sowas hochladen?

AW: SUM in erste leere Zeile von Oben WENN
11.08.2008 16:04:06
Oben
in dem du auf "Hier gehts zum File-Upload" klickts und den Anweisungen folgst.
nach erfolgreichem Upload bekommst du einen Link, den du kopierst und in den Beitrag einfügst.
Gruß, daniel

AW: SUM in erste leere Zeile von Oben WENN
11.08.2008 16:58:12
Oben
Okay,
dann probier ich es mal gleich aus, damit Du auch verstehst was ich überhaupt erreichen möchte
https://www.herber.de/bbs/user/54515.xls
für die Berechnung von JahresMenge will ich das was unter SUMs berechnet wurde für die jeweilige Menge durch die Anzahl der vorgekommenen Häufigkeit Teilen und dann mal 12 nehmen und das Ergebnis in die Spalte JahresMenge, damit ich ebeben am Schluss die Summe bilden kann.
Alle Produkte die weniger wie 3 mal auftauchen sollen in den Rechnungen garnicht bereücksichtigt werden! Eigentlich könnte man sie auch löschen bzw. ausblenden, das wäre am besten denk ich, dann verwirren die auch nicht.
was ich hierfür bis jetzt habe ist folgendes

Sub Duplikatgruppierung()
'Dim ws As Worksheet
'For Each ws In ThisWorkbook.Worksheets
'         ws.Activate
Dim lngZeile As Long
For lngZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1 To 2 Step -1
If Cells(lngZeile, 1).Value  Cells(lngZeile - 1, 1).Value Then
Rows(lngZeile & ":" & lngZeile + 2).Insert
End If
Next
Rows("2:4").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
With Range("D2:D" & Cells(Rows.Count, 1).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)


das berechnet mir zwar die Werte für SUMs aber ich komme nicht weiter, bin gerade am ausprobieren, dass ich eben die JahresMengen erhalte über eine WENN-UND formel in z.B. E2 die so aussehen könnte


=IF(AND(RC[-4]="",RC[-3]="",RC[-1]""),(RC[-1]/COUNTIF(C1,R[-1]C[-4]))*12,"")


das dann einfach bis zur letzten zeile runterziehen lassen bzw. ausfüllen lassen, dann sollte das doch gehen oder bin ich auf dem falschen dampfer?!?!?
Grüße

Anzeige
AW: SUM in erste leere Zeile von Oben WENN
11.08.2008 18:19:22
Oben
die Jahreswerte erhalte ich jetzt auch genau wie ich will

With Range("D2:D" & Cells(Rows.Count, 1).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)RC[-4],RC[-4]="""",RC[-2]""""),RC[-1]/COUNTIF(C[ _
-4],R[-1]C[-4])*12,"""")"
Selection.AutoFill Destination:=Range("E2:E" & Range("E2").End(xlDown).Row), Type:= _
xlFillDefault
With Range("F2:F" & Cells(Rows.Count, 1).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)RC[-6],RC[-6]="""",RC[-4]""""),RC[-1]/COUNTIF( _
C1,R[-1]C[-6])*12,"""")"
Selection.AutoFill Destination:=Range("G2:G" & Range("G2").End(xlDown).Row), Type:= _
xlFillDefault
With Range("H2:H" & Cells(Rows.Count, 1).End(xlUp).Row + 1)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = _
"=IF(R[-1]C1="""",TRUE,IF(COUNTIF(C1,R[-1]C1)RC[-8],RC[-8]="""",RC[-6]""""),RC[-1]/COUNTIF( _
C1,R[-1]C[-8])*12,"""")"
Selection.AutoFill Destination:=Range("I2:I" & Range("I2").End(xlDown).Row), Type:= _
xlFillDefault


Anzeige
AW: Problem gelöst?
11.08.2008 19:46:00
Daniel
Hi
dann ist das Problem jetzt gelöst?
schön
Gruß, Daniel

AW: Problem gelöst?
12.08.2008 09:53:52
Lauren
Hi Daniel,
also dieser Tip mit dem Direktbereich hat mir das Leben um einiges mit dieser Problemstellung erleichtert ;)
Ich bilde jetzt die Summen die ich will und an den Orten in denen ich will.......PERFEKT!!!
Jetzt will ich bevor ich diese Aufteilung und die Berechnungen mache will ich auf dem aktiven Tabellenblatt schauen
WENN in einer der Spalten D, E, F, G, H in einer Zelle eine Null vorkommt, soll die gesamte Zeile gelöscht werden, in der die Null vorkommt, da dies Fehlerhafte Daten sind und nicht in der Rechnung berücksichtigt werden sollen.
Also wenn jetzt in F17 eine Null vorkommt soll die gesamte Zeile 17 gelöscht werden.
Wie könnte man das noch ins Makro einbauen?!?!
Merci!!!!

Anzeige
AW: Problem gelöst?
12.08.2008 13:37:00
Daniel
Hi
folgendermassen
- füge in eine freie Spalte ab Zeile 2 folgende Formel ein:
=Wenn((d2*e2*f2*g2*h2)=0;"";Zeile())
- fixiere die Werte mit KOPIERN - INHALTE EINFÜGEN - WERTE
- Sortiere die Datei nach dieser Hilfsspalte
- markiere über BEARBEITEN - GEHE ZU - INHALTE - LEERZELLEN die zu löschendn Zellen in der Hilfsspalte
- lösche die Zeilen mit BEARBEITEN - ZELLEN LÖSCHEN - GANZE ZEILE
wenn du es als Makro brauchst, führe es einnmal von Hand durch und lass den Recorder mitlaufen.
Gruß, Daniel

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige