Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

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"