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

Zellen zählen

Zellen zählen
Thomas
Hallo Profis, ich bin sehbehindert und komme nicht weiter; ich möchte Zellen in den Spalten sub. und den Wert in ein Zelle schreiben. Dies alles über 15. Spalten und 35. Zeilen. Die Formel in "ti" schaut so aus; =WENN(Z(1)S-Z(-3)S;Z(1)S-Z(-3)S;0)
Ein Ausschnitt sieht so aus: Also es sollte die Zelle"F"162 von "F"169 subtrahiert werden und in "ti" eingesetzt werden. Das Ganze in einer Schleife, also immer das vorgehende "F" sub. aktivem "F".
Ich hoffe, ich habe mich einigermaasen verständlich ausgedrückt und Ihr könnt mir helfen - es ist dringen, da Semesterprüfungen anstehen...vielen Dank ...:-)
MfG Thomas
Zy 1 2 3
L 100 000 000
ti 162 000 000
F 162 000 000
L 100 100 000
ti 007 005 000
F 169 200 000
L 100 100 100
ti 020 012 242
F 189 212 242
L 100 090 095
ti 006 020 007
F 195 232 249
L 000 000 000
ti 000 000 000
F 000 000 000

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellen zählen
07.07.2012 09:12:53
fcs
Hallo Thomas,
mit der Beschreibung deines Problems und den Beispieldaten komme ich nicht klar.
Du machst es den Helfern einfacher, wenn du hier über "Hier gehts zum File-Upload" eine Beispiel-Exceldatei mit Daten und dem gewünschten Ergebnis bzw. mit den Berechnungsformeln hier hochlädst.
Alles, was in der Datei für das Problem nicht benötigt wird, kannst du ja weglassen.
Ich hoffe das schaffst du trotz der Sehbehinderung.
Es ist aber auch immer wieder übraschend, wie schnell solche Semesterprüfungen plötzlich anstehen und alles mögliche dringend wird.
Gruß
Franz
Anzeige
AW: Zellen zählen
08.07.2012 15:28:52
Thomas
Hallo Franz, vielen Dank für die Antwort, ich hatte schon die Befürchtung, dass sich niemand meldet...
ich hoffe ich kann dieses Mal das Forum richtig haendeln. Also noch einmal.....
Formel: =WENN(D8>1;D10-D6;0) oder =WENN(Z(-1)S>1;Z(1)S-Z(-3)S;0)
Code:
Sub MakroTI()
' MakroTI Makro
Range("D6").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C,R[-1]C,0)"
Range("D9").Select
ActiveCell.FormulaR1C1 = "=IF(R[1]C-R[-3]C,R[1]C-R[-3]C,0)"
Range("D13").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("D17").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("D21").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("D25").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("D29").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("D33").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("D34").Select
Range("E5").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E5").Select
ActiveCell.FormulaR1C1 = "=IF(R[1]C-R[25]C[-1],R[1]C-R[25]C[-1],0)"
Range("E9").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E13").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E17").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E21").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E25").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E29").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E33").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("E34").Select
Range("F5").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("F5").Select
ActiveCell.FormulaR1C1 = "=IF(R[1]C-R[25]C[-1],R[1]C-R[25]C[-1],0)"
Range("F9").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("F13").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("F17").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("F21").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("F25").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Range("F29").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
'Sprung auf Zelle
Range("D6").Select
Do Until ActiveCell.Value = Empty
Exit Do
Loop
End Sub
____________
Die Datei kann ich nicht uploaden - weis nicht wie's geht bzw. finde den Link nicht.
Gruss Thomas
Anzeige
AW: Zellen zählen
09.07.2012 10:28:31
fcs
Hallo Thomas,
Ich hab jetzt mal dein aufgezeichnetes Makro unter Verwendung von Zellbereichen, statt einzelnen Zellen, so angepasst, dass in allen Spalten D bis R die Formeln eingetragen werden.
Ich bin mir aber nicht 100% sicher, ob es das ist.
in deinem aufgezeichneten Teil werden in den Formeln in Zeile 5 die Werte aus Zeile 30 der vorherigen Spalte verwendet. Sollte dies nicht Zeile 34 sein?
Gruß
Franz
Sub MakroTI()
' MakroTI Makro
Dim wks As Worksheet
Dim Zeile As Long
Dim StatusCalc As Long
Set wks = ActiveSheet
With Application
'Makrobremsen lösen, Ereignismakros deaktivieren
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With wks
.Range("D6").FormulaR1C1 = "=IF(R[-1]C,R[-1]C,0)"
'    .Range("E5:R5").FormulaR1C1 = "=IF(R[1]C-R[25]C[-1],R[1]C-R[25]C[-1],0)"
.Range("E5:R5").FormulaR1C1 = "=IF(R[1]C-R[29]C[-1],R[1]C-R[29]C[-1],0)"
'Zelle D9:R9,...., D33:R33
For Zeile = 9 To 34 Step 4
.Range("D" & Zeile & ":R" & Zeile).FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
Next Zeile
'Tabelle neu berechnen
wks.Calculate
End With
With Application
'Makrobremsen zurücksetzen, Ereignismakros wieder aktivieren
.Calculation = StatusCalc
.ScreenUpdating = True
.EnableEvents = True
End With
'Sprung auf Zelle
Range("D6").Select
'? wofür soll die nachfolgende Schleife dienen? So ist sie ohne Zweck und kann weggelassen  _
werden.
Do Until ActiveCell.Value = Empty
Exit Do
Loop
End Sub

Anzeige
AW: Zellen zählen
09.07.2012 13:23:08
Thomas
Hallo Franz,
vielen Dank zum Anfang, sieht doch schon super aus..,-)
Jetzt ist es so, dass immer die letzte Zelle in der jeweiligen Spalte gerechnet wird.
Es sollte aber - wenn nur eine Zeile z.B. in Spalte "E" zu rechnen ist, den Bezug in die Spalte "D" stattfinden in die letzte volle Zelle und diese in die Berechnung einbezogen werden usw.
Also z.B. in der verhergehenden Spalte den Faktor "F" ausliest das Resultat berechnet und in die nächste Zelle(Faktor 'ti') einsetzt. Um danach wieder auf die nächste volle Zelle bezug zu nehmen, wenn keine weitere Zelle in der Spalte "E" ausgefüllt ist.
Dir herzlichen Dank im voraus
gruss
thomas
Anzeige
AW: Zellen zählen
09.07.2012 15:39:00
fcs
Hallo Thomas,
hast du schon mal versucht deine Beschreibung selber nachzuvollziehen und welche Überlegungen dir dabei zusätzlich durch den Kopf gehen?
Ich verstehe nur Bahnhof.
"Jetzt ist es so, dass immer die letzte Zelle in der jeweiligen Spalte gerechnet wird. "
Was ist die letzte Zeile? 34 ?
Wo wird gerechnet? Zeile 5 ?
"Es sollte aber - wenn nur eine Zeile z.B. in Spalte "E" zu rechnen ist, den Bezug in die Spalte "D" stattfinden in die letzte volle Zelle und diese in die Berechnung einbezogen werden usw. "
Wann ist nur eine Zeile berechnen?
Wann ist eine Zelle eine "volle" Zelle?
Welche ist dann die letzte volle Zelle?
Also z.B. in der verhergehenden Spalte den Faktor "F" ausliest das Resultat berechnet und in die nächste Zelle(Faktor 'ti') einsetzt. Um danach wieder auf die nächste volle Zelle bezug zu nehmen, wenn keine weitere Zelle in der Spalte "E" ausgefüllt ist.
Hier klinkt mein Verständnis komplett aus. Ich kann die Logik deiner Beispielsbeschreibung nicht nachvollziehen.
Wenn hier etwas in VBA umgesetzt/ergänzt werden soll, dann muss eine eindeutige Schrittfolge von Prüfungen - Aktionen(Berechnungen) - Ergebnisprüfungen - Folgeaktionen - beschrieben werden, die dann in VBA-Code umgesetzt wird.
Also in der Art:
Beginne in Spalte 4, Zeile 6,
Prüfe Wert in Zeile 5
Wenn Wert &gt0 dann füge Formel =ABC ein.
Gehe nach Zeile 9
Prüfe Wert in Zeile vorher
ErgebnisPrüfung
wenn Ergebnis A --&gt Aktion A --&gt tu was und wiederhole 4 Zeilen weiter unter bis Zeile 33
wenn Ergebnis B --&gt Aktion B --&gt tun was und mache in nächster Spalte Zeile 5 weiter bis Spalte 18(R)
usw. usw.
Denke daran: Im Moment kenne ich nur deinen Tabellenaufbau. Ich kenne weder Sinn und Zweck deiner Berechnungen noch deine bisherigen Gedankengänge für die erforderlichen Berechnungen bzw. wann die Berechnungen abgebrochen werden oder eine andere Richtung nehmen sollen.
Gruß
Franz
Anzeige
AW: Zellen zählen
09.07.2012 17:51:55
Thomas
Hallo Franz
sorry ich habe jetzt das Excelsheet mit Legenden angehängt, ich hoffe es ist jetzt verständlich...
Das letzte ausgefüllte Feld 'F' (es hat L / ti / F) ist immer mit dem verhergehenden 'F' zu subtrahieren und im jeweiligen Abschnitt in das Feld 'ti' einzutragen(siehe Legenden in Datei).
https://www.herber.de/bbs/user/80910.xlsx
Danke für die Geduld...,-)
gruss Thomas
AW: Zellen zählen
09.07.2012 23:53:13
fcs
Hallo Thomas,
jetzt hab ich es hinbekommen.
Die Ergebnisse der Makros stimmen für ti mit deinen Tabelleneinträgen überein.
Ich hab dir 2 Lösungen erstellt:
1. Makro berechnet die ti-Werte und trägt diese ein
2. Makro fügt Berechnungsformeln ein. Für Spalte E bis R müssen dies Matrix-Formel sein, um den letzten F-Werte in der vorherigen Spalte zu ermitteln.
Gruß
Franz
Sub MakroTI_Formeln()
' Trägt die Berechnungsformeln für ti im Tabellenblatt ein
Dim wks As Worksheet
Dim Zeile As Long, Spalte As Long
Dim StatusCalc As Long
Set wks = ActiveSheet
With Application
'Makrobremsen lösen, Ereignismakros deaktivieren
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With wks
For Spalte = 4 To 18 'Spalte D bis R
For Zeile_ti = 5 To 33 Step 4
If Spalte = 4 Then
'Formeln Spalte D
If Zeile_ti = 5 Then
.Range("D6").FormulaR1C1 = "=IF(R[-1]C>0, R[-1]C, 0)"
Else
.Cells(Zeile_ti, Spalte).FormulaR1C1 = "=IF(R[-1]C>1,R[1]C-R[-3]C,0)"
End If
ElseIf Spalte >= 5 Then
'Formeln in Spalte E bis R
If Zeile_ti = 5 Then
.Cells(Zeile_ti, Spalte).FormulaArray = _
"=IF(R[-1]C>1,R[1]C-INDEX(C[-1],MAX(IF(R4C[-1]:R34C[-1]>0," _
& "ROW(R4C[-1]:R34C[-1]),0) )),0)"
Else
.Cells(Zeile_ti, Spalte).FormulaArray = _
"=IF(R[-1]C>1,IF(R[-3]C>0,R[1]C-R[-3]C,R[1]C-INDEX(C[-1]," _
& "MAX(IF(R4C[-1]:R34C[-1]>0,ROW(R4C[-1]:R34C[-1]),0) ))),0)"
End If
End If
Next
Next Spalte
End With
With Application
'Makrobremsen zurücksetzen, Ereignismakros wieder aktivieren
.Calculation = StatusCalc
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Sub MakroTI_Werte()
' Berechnet ti-Werte und trägt diese im Tabellenblatt ein
Dim wks As Worksheet
Dim Zeile As Long, Spalte As Long, dblF As Double, bolNeueSpalte As Boolean
Dim StatusCalc As Long
Set wks = ActiveSheet
With Application
'Makrobremsen lösen, Ereignismakros deaktivieren
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With wks
If .Range("D5") > 0 Then
.Range("D6") = .Range("D5")
dblF = 0
bolNeueSpalte = True
For Spalte = 4 To 18 'Spalte D bis R
For Zeile_ti = 5 To 33 Step 4
Zeile_F = Zeile_ti + 1
'F-Wert prüfen
If .Cells(Zeile_F, Spalte) > 0 Then
If bolNeueSpalte = True Then
'ti-Wert aus letztem F-Wert der vorherigen Spalte berechnen und eintragen
.Cells(Zeile_ti, Spalte) = .Cells(Zeile_F, Spalte) - dblF
bolNeueSpalte = False
Else
'Ti-Wert berechnen und eintragen
.Cells(Zeile_ti, Spalte) = .Cells(Zeile_F, Spalte) - .Cells(Zeile_F - 4, Spalte) _
End If
'F-Wert merken
dblF = .Cells(Zeile_F, Spalte)
Else
'0 für ti eintragen
.Cells(Zeile_ti, Spalte) = 0
End If
Next
bolNeueSpalte = True
Next Spalte
End If
End With
With Application
'Makrobremsen zurücksetzen, Ereignismakros wieder aktivieren
.Calculation = StatusCalc
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub

Anzeige
AW: Zellen zählen
10.07.2012 11:14:56
Thomas
Guten Tag Franz
ich danke Dir herzlich für die Hilfe, es klappt einwandfrei.
Alles Gute und einen erholsamen Sommer
Gruss Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige