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].

Womöglich sind wir gar nicht die Krone der Schöpfung, sondern wurden von Mücken gezüchtet – als Nahrungsmittel.

Man hat mich mal wieder gezwungen LibreOffice Calc zu unterrichten!

Es ist erstaunlich: in Calc sieht die Verknüpfung auf ein anderes Tabellenblatt folgendermaßen aus:

=Tabellenblatt.Zelle

Verwendet man diesen Aufbau jedoch in Funktion INDEIREKT erhält man einen Fehler. DORT wird die Excelsyntax

=Tabellenblatt!Zelle

verlangt!

Ich vermute, dass LibreOffice beim Nachbauen oder Nachkopieren von Excel übersehen hat, dies umzusehtzen …

Wie die Silvesterfeier war? – Weiß nicht – ich habe noch keine Fotos gesehen.

Mit den drei Funktionen BEREICH.VERSCHIEBEN, INDIREKT und XVERWEIS kann man einen dynamischen bereich aufspannen. Diese drei Funktionen kann man als Namen speichern (ich habe sie mal Jahr1, Jahr2 und Jahr3 genannt).

Die Namen mit den Funktionen BEREICH.VERSCHIEBEN und XVERWEIS kann man wunderbar in einem Diagramm verwenden:

INDIREKT aber nicht!

Wenn der letzte Strohhalm, an dem man sich voller Verzweiflung klammert in einem Cocktail steckt, dann geht’s eigentlich.

Schade eigentlich. Microsoft verwendet in Excel immer stärker Tabellen (wir nennen sie „intelligente Tabellen“, „Formatierte Tabellen“ oder „dynamische Tabellen“). Leider kann man sie nicht auflisten lassen. Das wäre praktisch – denn wenn man beispielsweise mit der Datenüberprüfung auf eine solche Tabelle zugreift, muss man dies mit

=INDIREKT(„Tabellenname“)

machen. Hier wäre – ebenso wie beim Namensmanager – eine Auswahlliste praktisch.

Ich würde dich gerne einmal treffen, aber ich werfe immer daneben.

Ärgerlich. Wirklich sehr ärgerlich.

Ein Mitarbeiter einer Firma erstellt in Excel 2007 eine Liste mit Bildern und Dropdownlisten, die über eine Datenüberprüfung gefüllt werden. Über 60 Namen „suchen“ mit der Funktion INDIREKT den Wert der Dropdownliste in einem anderen Bereich und geben die Zelle zurück, in der sich ein Bild befindet.

Diese Namen werden auf die Bilder angewendet: über die Bearbeitungszeile wird der Name mit bspw. =Bild24 zugewiesen.

Das Problem: Es funktioniert prima in Excel 2007. Öffnet man diese Datei jedoch in Excel 2010 oder höher, sind die Verweise weg. Alle! Das heißt: noch einmal die 60 Verweise setzen.

Wirklich ärgerlich!

Leider keine Dynamik mehr …

Wer morgens kalt duscht, lügt auch den Rest des Tages

Irgendwie doof. Mal wieder nicht konsistent.

Kennen Sie das? Ich erstelle eine Liste mit Verkäufernamen, Monatsnamen und Umsatzzahlen. Über Formeln / Definierte Namen / Aus Auswahl erstellen werden die Spaltennamen und Zeilennamen zu Namen der entsprechenden Zeile und Spalte:

Nun kann man die Schnittmenge berechnen:

=Roth Umsatz

Leider kann man diese Werte nicht auslagern – das führt zu einem Fehler:

Das ist erstaunlich, denn folgende Formeln funktionieren problemlos:

=SUMME(INDIREKT(„C2:C7“))

=SUMME(INDIREKT(„Umsatz“))

Aber eben leider nicht:

=SUMME(INDIREKT(„Umsatz Roth“))

und auch nicht:

=SUMME(INDIREKT(„C2:C5 C3:C7“))

Schade, dass INDIREKT keine Schnittmenge verarbeiten kann.

Nachtrag: Danke an XLarium für den wertvollen Hinweis (⇓):

Es funktioniert mit:

=INDIREKT(„Umsatz“) INDIREKT(„Roth“)

und:

=SUMME(INDIREKT(„C2:C5“) INDIREKT(„C3:C7“))

Kann INDIREKT keine Tabellen?

Hallo. Ich habe eine Frage. Ich weiß, dass Excel nicht alles kann. Aber fragen kann man ja mal.

Ich habe für meinen Chef eine Liste in Excel erstellt. Habe über Erstellen / Tabelle eine Tabelle daraus gemacht. So weit, so gut.

Die Tabelle

Die Tabelle

Ich klicke in eine andere andere Zelle nebenan und erzeuge eine Summe:

Eine Spalte wird summiert.

Eine Spalte wird summiert.

Die Formel lautet:

=SUMME(Tabelle1[April])

Über ein Dropdownfeld kann man die Monate auswählen:

Die Monatsliste

Die Monatsliste

Und nun meine Frage. Eigentlich liebe ich die Funktion INDIREKT. Eine prima Sache. Aber kann sie nicht diese Formel zusammenbauen? Etwas so:

=SUMME(„Tabelle1[„&INDIREKT(„O2″)&“]“)

INDIREKT liefert einen Fehler.

INDIREKT liefert einen Fehler.

Die Antwort: Nein – nicht ganz – Sie müssen die Anführungszeichen anders setzen und INDIREKT VOR den gesamten Text stellen. Wenn Sie Formel wie folgt zusammenbauen, dann klappt es:

=SUMME(INDIREKT(„Tabelle1[„&O2&“]“))

Natürlich kann INDIREKT das.

Natürlich kann INDIREKT das.