Mein Schatz sagt oft „Du Hengst“ zu mir. Vorhin zum Beispiel: „du Hengst nur noch auf der Couch rum!“

Einfach nicht aufgepasst!

Programmieren Sie VBA? Programmieren Sie Formeln in VBA? Auf einem Tabellenblatt befinden sich in den Spalten BJ und BL Daten, die vertikal angeordnet sind:

Auf einem anderen Blatt wird Bezug auf diese Daten genommen:

Während ich die erste Spalte nach unten ziehen kann, muss ich die Formeln der ersten Zeile getrennt eingeben – ich möchte weder mit MTRANS, INDIREKT noch mit BEREICH.VERSCHIEBEN arbeiten. Es handelt sich um maximal sechs Werte.

Die Formeln müssen per VBA neu geschrieben werden. Der Makrorekorder ermittelt für die Formel

=WENN(tbl_Basisdaten!BJ2="";"";tbl_Basisdaten!BJ2)

der Zelle A2 den VBA-Code:

ActiveCell.FormulaR1C1 = " =IF(tbl_Basisdaten!RC[61]="""","""",tbl_Basisdaten!RC[61])"

Dabei ist RC[61] ein relativer Bezug: R -> gleiche Zeile; C[61] -> Spalte um 61 Spalten verschoben. Wäre der Bezug absolut ($BJ$2) wäre der Code:

R2C62

also: in Zeile 2 und in Spalte 62 – egal, wo sich die Zielzelle befindet. Der Code wird in einer Schleife verwendet:

For i = 1 To 6
   ThisWorkbook.Worksheets("tbl_Risikomatrix").Range("A1").Offset(i, 0).FormulaR1C1 = _
      "=IF(tbl_Basisdaten!RC[61]="""","""",tbl_Basisdaten!RC[61])" ' -- erste Spalte A
Next i

Klappt famos! Und nun die erste Zeile. Der Makrorekorder zeichnet auf:

ActiveCell.FormulaR1C1 = _
    "=IF(tbl_Basisdaten!R[1]C[62]="""","""",tbl_Basisdaten!R[1]C[62])"

Das kann doch leicht angepasst werden:

For i = 1 To 6
    ThisWorkbook.Worksheets("tbl_Risikomatrix").Range("A1").Offset(0, i).FormulaR1C1 = _
        "=IF(tbl_Basisdaten!R[" & i & "]C[62]="""","""",tbl_Basisdaten!R[" & i & "]C[62])" ' -- erste Zeile 1
        
Next i

Padautz – das funktioniert nicht! In B1 greife ich auf Spalte 63 zu, also 62 Spalten „neben mir“. In C1 dagegen benötige ich die Spalte, die sich 61 Spalten neben mir befindet, in D1 dagegen 60 Spalten. Also noch einmal:

For i = 1 To 6
    ThisWorkbook.Worksheets("tbl_Risikomatrix").Range("A1").Offset(0, i).FormulaR1C1 = _
        "=IF(tbl_Basisdaten!R[" & i & "]C[" & (63 - i) & "]="""","""",tbl_Basisdaten!R[" & i & "]C[" & (63 - i) & "])" ' -- erste Zeile 1
Next i

Und das klappt! Man muss so aufpassen bei den Bezügen! Und beim Umdenken von =BL2 auf =R[1]C[62].

Ist hier die Selbsthilfegruppe für Naive? – Ja: Wir lernen gerade giftige Pflanzen am Geschmack erkennen zu können.

Ich greife auf eine intelligente (formatierte/dynamische/strukturierte) Tabelle zu. Ich möchte in mehreren Zellen die gleiche Formel stehen haben, die ich danach leicht modifizieren kann. Also kann ich mehrere Zellen markieren und die Formel mit [Strg] beenden. Dann steht in allen Zellen die gleiche Formel, beispielsweise:

=SUMME(Tabelle1[Betrag]/Tabelle1[Prämienpunkte])

Wenn ich allerdings Formeln der Gestalt:

=[@[Quartal 1]]/@HP[[Gesamt]:[Gesamt]]

habe – also: die Spalte „Quartal 1“ wird verschoben, die Spalte „Gesamt“ bleibt fest – dann wüsste ich keine Möglichkeit, dies durch geschickte Tastatureingaben zu erzeugen. Die doppelte Klammer muss getippt werden. Oder? Wer kennt eine Lösung?

Weder innerhalb der Tabelle noch außerhalb.

Heute – ohne Worte!

Boah ist das umständlich! Formeln mit dem Funktionsassistenten in Calc zu erstellen!

In Excel wandelt die Funktionstaste [F4] einen relativen Bezug in einen absoluten um. In Calc tut dies die Tastenkombination [⇑] + [F4]. Dumm nur, dass diese Tastenkombination im Funktionsassistenten nicht funktioniert … Auch nicht Tastenkombinationen wie [⇑] + [Strg] + [↓], um schnell einen Bereich zu markieren.

Dann doch lieber Excel!

Wenn ich nur darf, wenn ich soll aber nie kann, wenn ich will dann mag ich auch nicht, wenn ich muss. Wenn ich aber darf, wenn ich will dann mag ich auch, wenn ich soll und dann kann ich auch …

Man kann einer einspaltigen Liste einen Namen zuweisen (Hier: „Einwohner“) und anschließend damit rechnen:

=Einwohner*1,1

Excel verwendet hierbei den relativen Bezug.

Will man jedoch auf die gleiche Art in der Bedingten Formatierung damit rechnen, scheitert man:

Ausgewertet wird der Ausdruck

=Einwohner>1000000

Das Ergebnis ist falsch; es wird keine Formatierung angezeigt.

Schade und nicht konsequent.

Ein Dankeschön an den Tabellenexperten Martin Weiß, der diese Inkonsistenz auf den Excellent Days 2018 vorgestellt hat.

Für Mädchen ist es besser nicht zu heiraten, aber Junx brauchen jemanden zum Putzen.

Ein Vortrag von Martin Weiß über Bedingte Formatierungen auf den Excellent Days. Er zeigt, wie man mit der Funktion ZÄHLENWENN alle Zahlen einfärben kann, mehr als drei mal vorkommen. Die Formel in der Bedingte Formatierungen lautet:

=ZÄHLENWENN($A$3:$O$32;A3)>3

Alle machen brav mit. Mein Nachbar wundert sich, warum bei ihm keine Zelle rot eingefärbt wird. Er schaut in den Manager für Regeln zur Bedingten Formatierung und wundert sich über die Formel:

=ZÄHLENWENN($A$3:$O$32;XEQ1048550)>3

Der Grund ist einfach: Er hat den Bereich von rechts unten nach links oben markiert. Deshalb wird ein relativer Bezug A3 in der Zelle A3 umgesetzt in: 30 Zeilen nach oben und 15 Spalten nach links. So kommt XEQ1048550 zustande.

Damit so etwas Nervendes nicht passiert, schlage ich ein anderes Vorgehen vor:

Ich beginne im ersten Schritt mit einer Zelle, beispielsweise A3 (oder O32) und aktiviere dort die Bedingte Formatierung:

Im zweiten Schritt aktiviere ich erneut den Regelmanager (Start / Bedingte Formatierung / Regeln verwalten) und dehne nun den Bereich aus:

Das klappt:

Okay – ein Schritt mehr – aber ich bin auf der sicheren Seite. Damit Excel nicht mehr nervt!

 

Humor ist der Knopf, der verhindert, dass uns der Kragen platzt. (Joachim Ringelnatz)

Nicht jede Formel darf sein!

Ich gestehe: Es ist mir lange Zeit nicht aufgefallen. Wahrscheinlich deshalb, weil ich die Symbole der Bedingten Formatierung in Excel nicht besonders schätze. Während man bei den Hintergrundfarben, Schriftfarben und Zellrahmen beliebige Formeln verwenden darf, ist dies bei den Skalen, Datenbalken und Symbolsätzen eingeschränkt. Genau:

Werte sind kein Problem

Werte sind kein Problem

Den Inhalt einer Zelle mit einem festen Wert abzugleichen ist kein Problem.

Absolute Bezüge geht auch

Absolute Bezüge geht auch

Den Wert auszulagern und mit einem absoluten Bezug darauf zuzugreifen ist auch kein Problem.

HEUTE() funktioniert

HEUTE() funktioniert

Auch Formeln wird HEUTE() stellen kein Problem dar.

Relative Bezüge leider nicht.

Relative Bezüge leider nicht.

Das Erstaunen ist groß, wenn man relative Bezüge verwendet. DAS ist verboten. Noch einmal hinschauen – das Kombination bietet „Formel“ an und nicht „Formel mit absolutem oder keinem Bezug“.

Okay – wahrscheinlich eine Kurzschreibweise …

Fast alle Rechnungen sind falsch

Warum rechnet Excel in der ersten Zelle richtig, in fast allen anderen Zellen falsch?

Excel rechnet fast überall falsch.

Excel rechnet fast überall falsch.

Wenn ich diese Frage höre, gibt es eigentlich nur eine Antwort – irgendetwas stimmt mit relativ/absolut nicht. Wenn Sie die Formel anschauen, die in C4 steht:

=B4*B1

dann müssten Sie erkennen, dass Sie eigentlich B1 fixieren müssen. Am besten, indem Sie den Cursor vor den Buchstaben B, zwischen B und 1 oder hinter die Zeilennummer 1 setzen und dann [F4] drücken. So wandelt Excel den relativen Bezug in einen absoluten (festen) Bezug um und schreibt:

=B4*$B$1

Formel runterziehen – dann klappt es:

Mit dem absoluten Bezug funktioniert es.

Mit dem absoluten Bezug funktioniert es.

SVERWEIS klappt nur manchmal

In den ersten Zeilen rechnet der SVERWEIS noch richtig, aber dann gibt es Fehler.

SVERWEIS rechnet manchmal richtig.

SVERWEIS rechnet manchmal richtig.

Eigentlich müssten Sie den Fehler selbst finden können, wenn Sie die Formel anschauen. Der Bereich (hier: A1:B14) wurde nicht fixiert. Das bedeutet: er „wandert“ beim Herunterziehen mit nach unten. Was passiert, können Sie leicht überprüfen, wen Sie auf eine Zelle doppelklicken, die sich weiter unten befindet.

Der Bereich wurde nicht fixiert.

Der Bereich wurde nicht fixiert.

Wandeln Sie also A1:B14 in $A$1:$B$14 um (oder verwenden einen Namen für diesen Bereich)