Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
424to428
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
424to428
424to428
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro: Kopfzeile, Summe und WENN

Makro: Kopfzeile, Summe und WENN
Daniel
Hallo Liebe Experten!
Ich benötige ein Makro, dass es mir zunächst ermöglicht,
in die Zellen B1, C1 und D1, die Texte "Eins", "Zwei" und "Drei" einzutragen.
Daneben soll in der Spalte B (ab Zeile 2) folgende Berechnun stattfinden:
=SUMME('1DayROC'!B3:S3)/18 ~f~
Ich möchte nun allerdings, dass sich die Berechnung nicht auf diese 18 Zellen beschränkt, sondern sich an die Spalten und Zeilen anpasst. Denn es können mal 10, mal 100 Spalten belegt sein (Ebenso bei den Zeilen). Ich hoffe das konnte ich verständlich beschreiben.
Zudem soll in Spalte C (hier auch ab C2) folgende Formel eingesetzt werden:
~f~=WENN(B3&lt=0;0;B3)
Auch hier ist es erforderlich die Formel nur dann greifen zu lassen wenn Zellen der Spalte B (durch obige Rechnung) belegt sind.
Ich hoffe mir kann geholfen werden....
Vielen Dank schonmal für die Mühe.
Daniel

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro: Kopfzeile, Summe und WENN
05.05.2004 23:16:05
Josef
Hallo Daniel!
Probier mal.

Sub Daniel()
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim lngE As Long
Dim lngRow As Long
'
Set wksQ = Sheets("1DayROC")
Set wksZ = ActiveSheet 'oder Tabellennamen angeben "= Sheets("Tabelle")"
'Überschrift
wksZ.[B1] = "Eins"
wksZ.[C1] = "Zwei"
wksZ.[D1] = "Drei"
'letzte gefüllte Zelle in Spalte "B" in wksQ ("1DayROC") ermitteln!
lngE = IIf(IsEmpty(wksQ.Range("B65536")), wksQ.Range("B65536").End(xlUp).Row, 65536)
For lngRow = 2 To lngE - 1
'Spalte "B" berechnen
wksZ.Cells(lngRow, 2) = WorksheetFunction.Sum( _
wksQ.Range("B" & lngRow + 1 & ":S" & lngRow + 1)) / 18
'Spalte "C" ausfüllen
wksZ.Cells(lngRow, 3) = IIf(wksQ.Range("B" & lngRow + 1) > 0, _
wksQ.Range("B" & lngRow + 1), 0)
Next
End Sub

Gruß Sepp
Anzeige
AW: Makro: Kopfzeile, Summe und WENN
06.05.2004 07:58:54
Daniel
Hallo Sepp!
Vielen Dank erstmal.
Einige Kleinigkeiten habe ich noch, die anders sein sollen:
'Spalte "B" berechnen
wksZ.Cells(lngRow, 2) = WorksheetFunction.Sum( _
wksQ.Range("B" & lngRow + 1 & ":S" & lngRow + 1)) / 18
Hier soll es nicht durch 18 sein, sondern durch die Anzahl der gefüllten Zellen in dieser Spalte. Hatte mich da nicht deutlich ausgedrückt. Sorry.
Ist es so geregelt, dass in der neuen Tabelle in Zelle B4 auch die Zeile B4 zur Berechnung herangezogen wird?
Könntest Du Dir vielleicht auch mal mein anderes Posting (gleich danach ansehen, mit der Variablen Summe). Das wäre super von Dir.
Ich kann mich erst Abends wieder melden....
Danke!
Daniel
Anzeige
AW: Makro: Kopfzeile, Summe und WENN
Josef
Hallo Daniel!
Dann so.
Sub Daniel() Dim wksQ As Worksheet Dim wksZ As Worksheet Dim lngE As Long Dim lngRow As Long Set wksQ = Sheets("1DayROC") Set wksZ = ActiveSheet 'oder Tabellennamen angeben "= Sheets("Tabelle")" 'Überschrift wksZ.[B1] = "Eins" wksZ.[C1] = "Zwei" wksZ.[D1] = "Drei" 'letzte gefüllte Zelle in Spalte "B" in wksQ ("1DayROC") ermitteln! lngE = IIf(IsEmpty(wksQ.Range("B65536")), wksQ.Range("B65536").End(xlUp).Row, 65536) For lngRow = 2 To lngE - 1 'Spalte "B" berechnen wksZ.Cells(lngRow, 2) = WorksheetFunction.Average( _ wksQ.Range("B" & lngRow + 1 & ":S" & lngRow + 1)) 'Spalte "C" ausfüllen wksZ.Cells(lngRow, 3) = CDbl(wksQ.Range("B" & lngRow + 1)) Next End Sub
Gruß Sepp
Anzeige
AW: Makro: Kopfzeile, Summe und WENN
06.05.2004 17:23:39
Daniel
Hallo Sepp!
Die Einträge in B und C haben einen kleinen Haken.
Die Berechnung in B3 bezieht sich offenbar auf die Berechnung des Durchschnitts der
Zeile 4. Es soll sich aber auf die Zeile 3 im Blatt "ROC" beziehen.
Beste Grüße,
Daniel
AW: Makro: Kopfzeile, Summe und WENN
06.05.2004 19:52:28
Josef
Hallo Daniel!
Jetzt, so glaube ich, hab' ich dich richtig verstanden!
Option Explicit

Sub Daniel()
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim lngE As Long
Dim lngRow As Long
'
Set wksQ = Sheets("1DayROC")
Set wksZ = ActiveSheet 'oder Tabellennamen angeben "= Sheets("Tabelle")"
'Überschrift
wksZ.[B1] = "Eins"
wksZ.[C1] = "Zwei"
wksZ.[D1] = "Drei"
'letzte gefüllte Zelle in Spalte "B" in wksQ ("1DayROC") ermitteln!
lngE = IIf(IsEmpty(wksQ.Range("B65536")), _
wksQ.Range("B65536").End(xlUp).Row, 65536)
For lngRow = 2 To lngE - 1
'Spalte "B" berechnen
On Error Resume Next
wksZ.Cells(lngRow, 2) = WorksheetFunction.Average( _
wksQ.Range("B" & lngRow & ":IV" & lngRow))
'Spalte "C" ausfüllen
wksZ.Cells(lngRow, 3) = IIf(wksZ.Cells(lngRow, 2) > 0, _
wksZ.Cells(lngRow, 2), 0)
Next
End Sub

Gruß Sepp
Anzeige
Super Arbeit. Danke Sepp!
06.05.2004 20:25:26
Daniel
Vielen Lieben Dank!
Danke für die Rückmeldung! o.T.
06.05.2004 22:07:47
Josef
Gruß Sepp
WENN in spalte C!?
06.05.2004 17:39:54
Daniel
Hallo Sepp,
zudem ist die Berchnung für Spalte c anscheinend ganz anders.
Sie soll bspw. für C5 lauten: =WENN(B5&lt=0;0;B5).
Danke für die UNterstützung,
Daniel

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige