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

Forumthread: Formel in Zelle schreiben ohne festen Zellbezug

Formel in Zelle schreiben ohne festen Zellbezug
07.09.2019 11:40:31
Oisse
Hallo Zusammen,
ich habe folgende Formel, um damit Zellen zu füllen:

For i = 2 To ls_Bau
.Cells(Zeile + 1, i).FormulaLocal = "=ZÄHLENWENN((" & Cells(4, i).Address & ":" & _
Cells(Zeile - 1, i).Address & ");""*"")"
Next i

In der Zelle steht dann Beispielsweise:

=ZÄHLENWENN(($D$4:$D$26);"*")

Ich hätte die Formel aber gerne dynamisch erstellt, sodass der Zeilenbereich erweitert werden kann und nicht jedesmal die Formel neu geschrieben werden muss.
Wie kann ich das bereits beim Erstellen der Formel in VBA erreichen?
Dankeschön
Gruß Oisse
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in Zelle schreiben ohne festen Zellbezug
07.09.2019 13:00:10
Hajo_Zi
was ist daran kompliziert in der Bearbeitungsleiste 26 durch 135 zu ersetzen?

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Formel in Zelle schreiben ohne festen Zellbezug
07.09.2019 13:16:18
Nepumuk
Hallo Oisse,
teste mal:
For i = 2 To ls_Bau
    .Cells(Zeile + 1, i).FormulaLocal = "=ZÄHLENWENN((" & Cells(4, i).Address(False, False) & ":" & _
        Cells(Zeile - 1, i).Address(False, False) & ");""*"")"
Next i

Gruß
Nepumuk
Anzeige
AW: Formel in Zelle schreiben ohne festen Zellbezug
07.09.2019 13:23:21
fcs
Hallo Oisse,
du kannst Parameter für Address angeben, so dass die Bezüge in der Formel nicht alle Absolut sind.
    For i = 2 To ls_Bau
.Cells(Zeile + 1, i).FormulaLocal = _
"=ZÄHLENWENN((" & Cells(4, i).Address(rowabsolute:=True, columnabsolute:=False, _
ReferenceStyle:=xlA1) _
& ":" & Cells(Zeile - 1, i).Address(rowabsolute:=False, columnabsolute:=False, _
ReferenceStyle:=xlA1) & ");""*"")"
Next i

'Alternative VBA-Anweisung zum Erstellen der Formeln
        .Range(.Cells(Zeile + 1, 2), .Cells(Zeile + 1, ls_Bau)).FormulaR1C1 = _
"=COUNTIF((R4C:R[-2]C), ""*"")"
Die Formel sieht dann z.B. so aus:
=ZÄHLENWENN((B$4:B14); "*")
Hoffe das ist das was dir weiterhilft.
LG
Franz
Anzeige
Funtioniert super
07.09.2019 13:49:01
Oisse
Hallo Franz, hallo Nepumuk,
eure Antworten sind klasse. Bin begeistert!
Vielen herzlichen Dank
Schönes WE
sorry, Test
08.09.2019 12:16:19
hans
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Schreiben von Formeln in Excel ohne festen Zellbezug


Schritt-für-Schritt-Anleitung

Um in Excel eine Formel dynamisch zu erstellen, ohne feste Zellbezüge zu verwenden, kannst du VBA verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Klicke im Projekt-Explorer mit der rechten Maustaste auf deinen Workbook-Namen und wähle Einfügen > Modul.

  3. Füge den folgenden Code ein:

    For i = 2 To ls_Bau
       .Cells(Zeile + 1, i).FormulaLocal = "=ZÄHLENWENN((" & Cells(4, i).Address(False, False) & ":" & _
       Cells(Zeile - 1, i).Address(False, False) & ");""*"")"
    Next i
  4. Passe die Parameter an: Stelle sicher, dass die Variablen ls_Bau und Zeile korrekt definiert sind.

  5. Starte das Makro: Führe das Makro aus, um die dynamischen Formeln in die Zellen zu schreiben.

Diese Methode ermöglicht es dir, die Zellbezüge flexibel zu gestalten, sodass du nicht jedes Mal die Formel manuell anpassen musst.


Häufige Fehler und Lösungen

  • Fehler: Formel wird nicht korrekt angezeigt

    • Lösung: Überprüfe, ob du die richtigen Parameter für .Address verwendet hast. Verwende False für relative Bezüge, um feste Zellbezüge zu vermeiden.
  • Fehler: Laufzeitfehler beim Ausführen des Makros

    • Lösung: Stelle sicher, dass die Variablen ls_Bau und Zeile initialisiert sind und einen gültigen Wert haben.

Alternative Methoden

Wenn du keine VBA verwenden möchtest, kannst du die Formel auch manuell in die Zelle eingeben und dann die Funktion "Ausfüllen" verwenden:

  1. Schreibe die Formel in die erste Zelle.
  2. Ziehe das Ausfüllkästchen in der unteren rechten Ecke der Zelle nach unten, um die Formel auf benachbarte Zellen zu übertragen.
  3. Achte darauf, dass du die Zellbezüge entsprechend anpasst.

Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von dynamischen Formeln in Excel:

For i = 2 To ls_Bau
    .Cells(Zeile + 1, i).FormulaLocal = "=ZÄHLENWENN(B$4:B" & Zeile - 1 & "; ""*"")"
Next i

In diesem Beispiel wird der Zellbezug für die Zeile dynamisch angepasst, während die Spalte konstant bleibt.


Tipps für Profis

  • Benutze benannte Bereiche, um die Lesbarkeit deiner Formeln zu erhöhen.
  • Setze Fehlerbehandlungsroutinen in deinem VBA-Code ein, um potenzielle Probleme frühzeitig zu erkennen.
  • Experimentiere mit Formel-Array für komplexere Berechnungen, um die Effizienz zu steigern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Formel immer aktualisiert wird?
Verwende dynamische Zellbezüge und stelle sicher, dass deine Datenquelle immer aktuell ist.

2. Kann ich auch ohne VBA Formeln dynamisch erstellen?
Ja, du kannst Excel-Formeln manuell eingeben und das Ausfüllen-Tool verwenden, um die Formeln auf andere Zellen anzuwenden.

3. Was sind die Vorteile von dynamischen Formeln?
Dynamische Formeln erleichtern die Anpassung und Verwaltung von Berechnungen, da sie sich automatisch an Änderungen in den Daten anpassen können.

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