Zellen für benannte Zeilen und benannte Spalten automatisch erhöhen

1169
stpn

Ich bin auf der Suche nach einer Möglichkeit, Zellen innerhalb des angegebenen Bereichs zu referenzieren und es für die Person verständlich zu machen, die durch die Kalkulationstabelle schaut.

Ich habe diese Tabelle:

 A B C D E F G H 1 jan feb mar apr may sum sum2 2 car 1 2 3 4 5  3 bot 3 4 5 6 7 4 top 10 20 30 40 50 

"Auto" ist also der benannte Bereich B2: F2 und "Jan" ist der benannte Bereich für B2: B4

In der idealen Welt sehe ich mich dabei:

G2 = car jan 

Wenn ich dann die obige Formel in H2 kopiere, wird "jan" automatisch in "feb" inkrementiert und ich bekomme

G3 = car feb 

Das funktioniert offensichtlich nicht. Ich habe verschiedene Wege gesehen, wie die Leute solche Ergebnisse vorschlagen, aber es gibt mir einige lange Nachschlagformeln, während ich möchte, dass die Person, die die Tabelle liest, alle Referenzen intuitiv verstehen kann, ohne zu wissen, wofür Formeln stehen.

Wenn dies absolut nicht möglich ist, würde ich mich freuen, zumindest über den Namen der Zeile und den Buchstaben der Spalte auf Zellen verweisen zu können. Damit ich das machen kann:

G2 = SOMEFORMULA(car, C) 
0

2 Antworten auf die Frage

1
Angel

Mit den genannten Bereichen schreiben Sie in G2 die nächste ziehbare Formel:

=INDEX($A$1:$F$4,ROW(INDIRECT($A2)),COLUMN(INDIRECT(B$1))) 

Und natürlich könntest du sowas schreiben

=INDEX($A$1:$F$4,ROW(car),COLUMN(feb)) 

aber diese Formel wäre nicht schleppbar.

(Hinweis $ A $ 1: $ F $ 4 ist Ihre Datensatzreferenz)

Hoffe, es funktioniert!

1
CallumDA

Hier ist eine VBA-Lösung. Die Verwendung von Makros für etwas, das mit Arbeitsblattformeln möglich ist, ist nicht die bewährte Methode. Sie bietet jedoch die gewünschte Funktionalität. Erstellen Sie ein Modul in Ihrer Arbeitsmappe, und fügen Sie diesen Code dem Modul hinzu. Vergessen Sie nicht, Ihre Datei als .xlsm zu speichern

Function SOMEFORMULA(item As Variant, month As Variant)  Dim rng As Range  'set your lookup range Set rng = Worksheets("Sheet1").Range("A1:F4")  SOMEFORMULA = Application.WorksheetFunction.Index(rng, WorksheetFunction.Match(item, WorksheetFunction.Index(rng, 0, 1), 0), WorksheetFunction.Match(month, WorksheetFunction.Index(rng, 1, 0), 0))  End Function 

Meine Empfehlung ist, einen benannten Bereich für Ihr Datenarray zu verwenden, z. B. diese Zeile:

Set rng = Worksheets("Sheet1").Range("A1:F4") 

Wird:

Set rng = Worksheets("Sheet1").Range("named_range") 

Und kann von der Arbeitsmappe aus bearbeitet werden.

Möglicherweise möchten Sie auch den Formulierungsnamen von "SOMEFORMULA ()" in einen kleineren / passenderen Namen ändern.

Die Ergebnisse sind wie folgt:

enter image description here

Ich habe es gerade ausprobiert, aber wenn ich = SOMEFORMULA ("auto", "feb") in die nächste Zelle kopiere, z. B. sum2 - bekomme ich noch = SOMEFORMULA ("car", "feb") und nicht = SOMEFORMULA ("car") ,"beschädigen"). Also wird der Name der nächsten Spalte nicht automatisch inkrementiert? stpn vor 9 Jahren 0
Nein, Sie können jedoch Zellreferenzen verwenden, beispielsweise `= SOMEFORMULA ($ A2, C $ 1)` `, um` = SOMEFORMULA ("car", "mar") `zu ersetzen. Dann können Sie es entlang oder nach unten ziehen. Wenn Sie die Formel ziehen möchten, benötigen Sie immer Zellreferenzen. Dann verlieren Sie die gewünschte Lesbarkeit. CallumDA vor 9 Jahren 0