Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro: Kopfzeile, Summe und WENN

Forumthread: 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
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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige