Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ersatz für INDIREKT

Ersatz für INDIREKT
23.03.2015 19:54:13
René
Hallo zusammen,
da ich in meiner Tabelle ca. 10000 INDIREKT-Formeln "verbaut" habe, wird das Ganze etwas langsam.
Hier ein Beispiel:
=SVERWEIS($A6;INDIREKT("'"&B$1&"'!$a$9:$dv$44");B$2;2)
Gibt es eine Möglichkeit, mit INDEX o.ä. die lästigen INDIREKT zu ersetzen?
Danke schonmal für die Hilfe
René

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ersatz für INDIREKT
23.03.2015 21:04:46
Daniel
Hi
wenn du den Tabellenblattnamen berechnest: nein.
Index taugt nur bei berechneten Zelladdressen (Zeile + Spalte) als Ersatz.
wieviele unterschiedliche Datenquellen hast du denn?
Wenn du diese auf einem Tabellenblatt platzierst, ließe sich ggf was machen, beispielsweise so:
- in Zeile1 ab Spalte B steht der Wert "A", "B" oder "C"
- die Suchmatrix für "A" sei Tabelle1!A9:DV44, die Suchmatrix für "B" sei Tabelle1!A45:DV80, die Suchmatrix für "C" sei Tabelle1!A81:DV116
dann folgende Formel:
=SVerweis($A6;Index(Tabelle1!$A:$A;(Vergleich(B$1;{"A";"B";"C"};0)-1)*36+9):Index(Tabelle1!$DV:$DV;Vergleich(B$1;{"A";"B";"C"};0)*36+9-1);B$2;2)
Gruß Daniel

Anzeige
AW: Ersatz für INDIREKT
24.03.2015 07:45:05
René
Hallo Daniel,
es können bis zu 20 Datenquellen sein, die programmtechnisch erzeugt werden. Die Namen sind variabel.
In ein Tabellenblatt geht nicht, da nicht alle Nutzer alle Blätter bearbeiten sollen.
Schade. Danke trotzdem.
Gruß René

INDIREKT ist immer volatil, ...
23.03.2015 22:16:35
Luc:-?
…was hier aber nicht unbedingt erforderlich ist, René;
alternativ zu dem bereits gemachten Vorschlag könntest du deshalb das INDIREKT-Konstrukt durch 1-2 nicht-volatile Trivial-UDFs* ersetzen. UDFs wdn ggf auch etwas öfter neu berechnet als XlStandardFktt, es käme also auf einen Versuch an.
* In VBA pgmierte sog Benutzerdefinierte Fkt (UserDefined Function).
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: INDIREKT ist immer volatil, ...
24.03.2015 07:58:54
René
Hi Luc,
klingt schon mal prima. Leider habe ich davon keine Ahnung. Mein erster Ansatz wäre dieser, obwohl ich annehme, ich liege falsch.
Public Function test()
test = SVERWEIS($A6;INDIREKT("'"&B$1&"'!$a$9:$dv$44");B$2;2)
End Function
Gruß René

AW: INDIREKT ist immer volatil, ...
24.03.2015 10:25:25
Daniel
Hi
wenn du den Zellbereich als Stringtext vorgeben willst, dann eher so:

Public Function SVerweisX(SuchWert As Variant, _
SuchMatrix As String, _
Spalte As Long, _
Optional BereichVerweis As Boolean = True) As Variant
SVerweisX = WorksheetFunction.VLookup(SuchWert, Range(SuchMatrix), Spalte, BereichVerweis)
End Function
und dann als formel:
=SVerweisX($A6;"'"&B$1&"'!A9:DV44";B$2;2)
dies ist dann aber nicht mehr volatil, dh die Neuberechnung erfolgt nur, wenn in den direkt angegebenen Zellbereichen (A6, B1, B2) eine Änderung erfolgt.
Bei einer Änderung in der als Stringtext angegebenen Suchmatrix erfolgt keine Neuberechnung der Formeln.
Gruß Daniel

Anzeige
AW: INDIREKT ist immer volatil, ...
24.03.2015 17:01:22
René
Hi Daniel,
es funktioniert prima. Ich hoffe das Problem mit der Neuberechnung zu lösen, indem ich die Werte B2 bis JU2 nochmal reinkopiere.
Danke für die kompetente Hilfe, auch an Luc.
Gruß René

AW: INDIREKT ist immer volatil, ...
24.03.2015 17:06:00
Daniel
Hi
wenn du alles auf einen Schlag neu berechen willst, kannst du auch einen weiteren Parameter mit in die Funktion aufnehmen.
für diesen Parameter setzt du in allen Formel die selbe Zelle ein.
Für eine vollständige Neuberechnung änderst du dann nur diese eine Zelle.
Im code der Formel selbst brauchst du diesen Wert dann nicht zu verwenden.
Gruß Daniel

Anzeige
Ja, liegst du, denn INDIREKT ist da immer noch ...
24.03.2015 13:55:41
Luc:-?
…drin, René;
ich meinte eher einen Ersatz für INDIREKT, nicht einen für SVERWEIS (Daniels Lösung), aber das geht natürlich auch.
Ich hatte das mal mit 2en meiner UDFs (Erstere vor Jahren - evtl auch als TinRange -, hier, Letztere noch nie publiziert!) wie folgt versucht:
=SVERWEIS($A6; T2Range("'"&B$1&"'!"&RAddress($A$9:$DV$44));2;0)
Statt RAddress kann auch ADRESSE verwendet wdn, nur ist der ArgumentAufbau dann komplizierter, falls der Bereich (teil-)dynamisch sein soll, was hier aber nicht der Fall zu sein scheint (absolute Adressierung, in reinem Text allerdings unnötig, denn der ändert sich ohnehin nicht!).
Allerdings ist mir unklar, was du mit den Argumenten3+4 von SVERWEIS bezweckst. Arg3 wird dann aus B$2 teil-dynamisch entnommen, aber Arg4…? Hier gehört ein Wahrheitswert hin, ersatzweise 0 oder (-)1. Alle Zahlen, die ≠0 sind, ergeben automatisch WAHR, was Sortierung voraussetzt (oder ist das ab Xl14/2010 anders?).
Gruß, Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige