Zusammengesetzte Bezeichnung beim Index-Befehl
 |
Betrifft: Zusammengesetzte Bezeichnung beim Index-Befehl
von: Sascha
Geschrieben am: 25.08.2004 11:49:01
Hallo,
ich habe folgendes Problem:
Bei der Verwendung des Index-Befehls wird meine Formel aufgrund der verwendeten sehr langen Pfadangaben zu groß für die Zelle ("Formel zu lang"). Meine Idee war jetzt, dass ich den Pfad in eine andere Zelle (z.B. A4) schreibe und die Matrix beim Index-Befehl dann aus zum Beispiel A4 und $E$332:$AK$360 zusammensetze. Nach längerem Probieren ist mir dies aber bisher nicht gelungen.
Hat jemand eine Idee, wie dies funktionieren könnte?
Danke im Voraus,
Sascha.
Betrifft: Theoretisch mit INDIREKT, praktisch aber...
von: Boris
Geschrieben am: 25.08.2004 11:53:41
Hi Sascha,
...wohl nicht möglich, da dafür die Quelldatei geöffnet sein muss.
Alternativ:
Verknüpfe die Quelldatei in einem separaten Blatt in deiner Mappe und greife darauf mit der INDEX-Funktion zurück.
Grüße Boris
Betrifft: AW: Theoretisch mit INDIREKT, praktisch aber...
von: Sascha
Geschrieben am: 25.08.2004 12:02:44
Die Angabe der Matrix erfolgt im Index-Befehl ja in der Form 'G:\...\...\...\...\[Zieldatei.xls]Blatt4'!$E$332:$BK$360
Ist es jetzt nicht möglich, in A4 'G:\...\...\...\...\[Zieldatei.xls]Blatt4'! zu schreiben und im Index-Befehl dann so in etwa A4&$E$332:$BK$360 !?
Sascha.
Betrifft: Hast du mein Antwort gelesen?
von: Boris
Geschrieben am: 25.08.2004 12:06:37
Hi Sascha,
ich schrieb: Theoretisch mit INDIREKT (das ist eine Funktion), praktisch muss dafür aber die Quellmappe geöffnet sein - und daher scheidet diese Möglichkeit in 99% aller Fälle aus.
Falls du zu dem 1% gehörst, dann lass es mich wissen.
Grüße Boris
Betrifft: nein - mit Indirekt (aber...)
von: Günther Oppold
Geschrieben am: 25.08.2004 12:07:50
Hi Sascha
wie Boris geschrieben hat müsste die Formel:
=Index(indirekt(A4&&$E$332:$BK$360)... lauten
jedoch funktionieren Indirekt-Funktionen nur bei geöffneter Zieldatei
Günther
Betrifft: AW: nein - mit Indirekt (aber...)
von: Sascha
Geschrieben am: 25.08.2004 12:10:27
Vielen Dank erstmal für die Antworten. Ansonsten gibt es da keine weiteren Möglichkeiten !?
Sascha
Betrifft: Du liest wohl wirklich nicht...
von: Boris
Geschrieben am: 25.08.2004 12:12:51
Hi Sascha,
...was man dir schreibt, oder?
Das Wort
Alternativ in meiner ersten Antwort impliziert doch sowas wie eine
weitere Möglichkeit...
Grüße Boris
Betrifft: AW: Du liest wohl wirklich nicht...
von: Sascha
Geschrieben am: 25.08.2004 12:17:12
Doch, das mache ich schon, nur würde diese alternative Möglichkeit mein File auf eine Größe von etwa 15Mb aufblähen, was es ein wenig unhandlich macht. Dass ich auf diese Möglichkeit nicht eingegangen bin, sollte indes implizieren, dass ich diese Variante für leider nicht praktikabel hielt. Danke trotzdem für die Hilfe.
Sascha.
Betrifft: Dann schreib das doch direkt so
von: Boris
Geschrieben am: 25.08.2004 12:21:55
Hi Sascha,
denn dann weiss ich auch,
warum das für dich kein gangbarer Weg ist.
Alternativen ohne VBA gibt es nur noch eine:
Schaufel deine Datei näher an die Festplatte, damit der Pfad nicht mehr so lang ist.
Oder schreib mal genau, wie deine Formel aussieht. Möglicherweise gibt´s auch ne einfachere Lösung, die trotz der langen Pfade nicht an die Zeichengrenze von 1024 pro Zelle stößt.
Grüße Boris
Betrifft: Es gibt noch ne Möglichkeit
von: Boris
Geschrieben am: 25.08.2004 12:29:52
Hi Sascha,
...aber möglicherweise hast du sie schon umgesetzt:
Schreib wie Formeln und halte dabei die Quelldatei geöffnet.
Hat den Vorteil, dass die ganzen Pfadangaben zunächst mal nicht mit in die Formel übernommen werden.
Anschließend kannst du die Quelldatei schließen.
Die Formeln enthalten dann auch die Pfade - und sie funktionieren, obwohl die maximale Zeichenzahl von 1024 überschritten ist.
Ab dann solltest du die Formel aber nicht mehr editieren - dann dann gibt´s Mecker von Excel...
Grüße Boris
Betrifft: AW: Es gibt noch ne Möglichkeit
von: Sascha
Geschrieben am: 25.08.2004 12:58:23
Danke für die Antworten.
@Beate: ich werde das gleich mal ausprobieren
@Boris: bin gerade dabei, das so zu machen. Leider kann man dann die Verknüpfungen nicht schnell mal ändern.
Danke nochmals.
Sascha.
Betrifft: AW: Es gibt noch ne Möglichkeit
von: Sascha
Geschrieben am: 25.08.2004 13:04:16
Ist es möglich, einem Wert während einer Berechnung eine Variable zuzuweisen, so dass man sich im weiteren Verlauf (in der gleichen Formel) auf diese Variable berufen kann, ohne noch einmal den Wert berechnen zu müssen!? (Dies würde meine Formel nämlich erheblich verkürzen)
Sascha.
Betrifft: Arbeite mit Hilfsspalten
von: Boris
Geschrieben am: 25.08.2004 13:25:17
Hi Sascha,
in denen du Teilberechnungen durchführst. Darauf kannst du dann einfach referenzieren.
Grüße Boris
Betrifft: AW: Arbeite mit Hilfsspalten
von: Sascha
Geschrieben am: 25.08.2004 13:32:15
Hm, aber leider habe ich eine Matrix mit etwa 50 Spalten, wenn ich da hinter jede eine Hilfsspalte setze, dann wird es schwierig, Teile des Arbeitsblattes einfach mal zu kopieren...
Vielen Dank trotzdem,
Sascha.
Betrifft: Sorry - ohne VBA keine weitere Idee...
von: Boris
Geschrieben am: 25.08.2004 13:43:21
Hi Sascha,
...zumindest solange du nix zu deinen eigentlichen Formeln sagst.
Grüße Boris
Betrifft: AW: Sorry - ohne VBA keine weitere Idee...
von: Sascha
Geschrieben am: 25.08.2004 14:16:27
Also, ich versuche noch einmal, das Problem umfassend zu erklären:
Ausgangssituation ist wie folgt - ich habe ein Tabellenblatt, in das ich mir per Index-Befehl mit Vergleich aus einer anderen Datei die Zellenwerte für eine Matrix der Größe 100x50 besorge. Hierbei darf ich den Speicherort der anderen Datei nicht ändern. Mein Befehl für diese Aktion sieht also beispielsweise so aus:
=INDEX('G:\03_Pfadangabe1\Unterverzeichnis1\Unterverzeichnis2\Unterverzeichnis3\[Zieldatei.xls]Summary'!$E$332:$BK$360;VERGLEICH($B19;'G:\03_Pfadangabe1\Unterverzeichnis1\Unterverzeichnis2\Unterverzeichnis3\[Zieldatei.xls]Summary'!$C$332:$C$360;FALSCH);VERGLEICH(H$2;'G:\03_Pfadangabe1\Unterverzeichnis1\Unterverzeichnis2\Unterverzeichnis3\[Zieldatei.xls]Summary'!$E$3:$BK$3;FALSCH))
Mit ein paar WENN() abfragen komme ich so sehr schnell auf 1024 Zeichen. Ich suche jetzt nach einer Möglichkeit, die lange Pfadangabe in der Formel zu vermeiden, so dass ich die 1024 Zeichen nicht erreiche. Dies geht, wie du schon sagtest, durch das gleichzeitige Offenhalten der Zieldatei bei der Eingabe der Formel, aber halt auch nur für diese Zeit. Wenn man später einmal die Verknüpfung ändern möchte, dann schlackert Excel mit den Ohren.
Hoffe, dass du mit der Beschreibung etwas anfangen kannst.
Danke im Voraus.
Sascha.
Betrifft: Nix Neues von meiner Seite her...
von: Boris
Geschrieben am: 25.08.2004 14:26:05
Hi Sascha,
...habe dir inzwischen alle für mich denkbaren Ansätze beschrieben.
Da wohl jede Lösung für sich gewisse Einbußen an Komfort mit sich bringt, musst du das für dich kleinste Übel heraussuchen:
Entweder Hilfsspalten und Probleme beim Kopieren, Verknüpfungen und Probleme mit der Dateigröße, INDIREKT und die Notwendigkeit der zu öffnenden Quelldatei, nicht mehr editierbare Formeln etc...
Oder eben mit VBA hantieren oder oder oder...
Grüße Boris
Betrifft: AW: Nix Neues von meiner Seite her...
von: Sascha
Geschrieben am: 25.08.2004 14:33:19
Okay, vielen Dank an alle für die Hilfe.
Ich werde mal schauen, wie sich das Problem am günstisten lösen lässt. Vielleicht fällt mir auch noch etwas völlig Revolutionäres ein ;-)
Sascha.
Betrifft: Warum nicht so eine einfache Lösung?
von: Beate Schmitz
Geschrieben am: 25.08.2004 12:26:45
Hallo Sascha,
probier doch mal folgendes:
Makro, dass automatisch alle verknüpften Dateien öffnet ins Codefenster "dieseArbeitsmappe" (deiner Datei mit der INDIREKT-FORMEL) einfügen :
Private Sub Workbook_Open()
Dim arLinks As Variant
Dim intIndex As Integer
Application.ScreenUpdating = False
arLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(arLinks) Then
For intIndex = LBound(arLinks) To UBound(arLinks)
ActiveWorkbook.OpenLinks arLinks(intIndex)
Next intIndex
Else
MsgBox "The active workbook contains no external links."
End If
Application.ScreenUpdating = True
End Sub
Desweiteren hier ein Makro, was vor dem Schließen der aktiven Datei alle anderen Dateien ohne Speichern schließt (mit Ausnahme der Arbeitsmappe, aus der das Makro ausgeführt wird) - muss ins gleiche Codefenster :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each w In Workbooks
If w.Name <> ThisWorkbook.Name Then
w.Close savechanges:=False
End If
Next w
End Sub
Dann kannst ohne Probleme deine INDIREKT-Formel behalten und deine Datei bleibt klein,
Die Makros wirst du doch kopiert kriegen.
Gruß,
Beate
Beiträge aus den Excel-Beispielen zum Thema "Zusammengesetzte Bezeichnung beim Index-Befehl"