Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
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

Array aufbauen

Array aufbauen
15.01.2021 17:38:35
Elise
Hallo zusammen,
kann mir jemand helfen ein Array aufzubauen? (Zumindest glaube ich, dass ein Array helfen würde.) Ich möchte nämlich folgendes tun:
den Bereich A4:S14 aus einer Datei mit dem selben Bereich einer anderen Datei verknüpfen, aber andere Reihenfolge (also nicht 1,2,3,4,5,6 sondern nach der Verknüpfung soll die Reihenfolge lauten: 6,5,4,3,2,1 . Das bedeutet:
(Datei 1) A4= (Datei 2) A14
(Datei 1) A5= (Datei 2) A13
(Datei 1) A6= (Datei 2) A12
usw.
Der Makrorecorder sagt folgendes:
Range("A4").Select
ActiveCell.FormulaR1C1 = _
"='[Datei2.xlsx]1.1 Beispiel-Tab'!R22C2"
Range("A5").Select
ActiveCell.FormulaR1C1 = _
"='[Datei2.xlsx]1.1 Bespiel-Tab'!R21C2"
Range("A6").Select
ActiveCell.FormulaR1C1 = _
"='[Datei2.xlsx]1.1 Beispiel-Tab'!R20C2"
Das Problem:
- Die Datei mit den Daten (also womit ich die zweite Datei speisen soll) hat ausgeblendete Spalten, die ich aber auch nicht brauche. Daher müsste ich manuell ganz genau sagen welche Spalten ich brauche
- Ich muss den Bereich A4 bis S14 speisen.
Wie kann ich es bewerkstelligen, dass ich später nur noch auf Aktualisierung klicke, ohne dass ich noch etwas an der Reihenfolge ändern muss?
Es wäre so sehr, sehr, sehr hilfreich wenn Ihr mir helfen könntet.
Vielen Dank!
Liebe Grüße
Elise

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfrage: Mit anderen Worten ...
15.01.2021 18:07:42
Luc:-?
…die QuellDatei hat ausgeblendete Spalten, die ausgeblendet wdn müssen, weil sie in der ZielDatei fehlen, die Daten dort also lückenlos pro Zeile aufeinander folgen, Elise?
Ist das so, kann ein Array, das nur die relevanten QuellDaten enthält und somit die Struktur der ZielDatei (ggf gleich in umgekehrter Reihenfolge) widerspiegelt hilfreich sein, weil das den Ablauf vereinfachen würde.
Bei Bestätigung später Näheres.
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Anzeige
AW: Nachfrage: Mit anderen Worten ...
15.01.2021 18:17:13
Elise
Hallo Luc:-?,
genau, so ist das.
Viele Grüße
E.
Dann könnte man aber auch eine Hilfstabelle ...
16.01.2021 03:33:49
Luc:-?
…aufbauen, Elise,
die die ausgeblendeten Spalten nicht enthält und gleichzeitig die Daten der verbliebenen Spalten in umgekehrter Reihenfolge zeigt, also die letzte Zeile zuerst und die erste zuletzt. Das kann/muss man auf einem Blatt mit einer Fml machen, weil letztere so nicht in VBA fktionieren würde. Das dann in ein Array einzulesen, dürfte unproblematisch sein. Für QuellDaten in A1:J5, wobei die 5 Spalten B, D:E, H und J ausgeblendet sind, also nur die 5 A, C, F:G und I verwendet wdn, habe ich mal ein Bsp mit pluraler MatrixFml* gemacht. Diese lautet:
L1:P5: {=INDEX(NoErrRange(A1:I5;-1);6-ZEILE(1:5);{1.1.1.2.1};{1.2.3.3.4})}
INDEX ist hierbei notwendig, um das Ergebnis der UDF NoErrRange, die ausgeblendete Spalten ganz weglässt (führt zu einem diskontinuierlichen Bereich!), darzustellen, was sonst nicht möglich wäre. Das 2. (Zeilen-)Argument von INDEX erzeugt die umgekehrte ZeilenAbfolge, das 3. nennt die zugehörigen Spalten per MatrixKonstante (notwendig, weil eine Area des diskontinuierlichen ErgebnisBereichs 2 Spalten hat (alle anderen nur 1), und das 4. führt analog die ReihenfolgeNrn der Ergebnis-Areas auf. Dabei wird die 3 2× aufgeführt, weil diese Area 2 Spalten hat.
Es sollte dir dann keine große Mühe bereiten, diese Daten für den Vgl mit der ZielTabelle zu nutzen, ob mit Fml oder VBA, Array oder direkt, wobei ein Array (in VBA) bei größeren Datenmengen sinnvoller sein kann. Die Fml für die Hilfstabelle könnte allerdings bei großen Datenmengen zu langsam sein, im Bsp ist sie das natürlich nicht.
* Der UDF-Name in der Fml ist maussensitiv und führt zur UDF. Die dortige globale Enumeration nicht vergessen mit zu kopieren!
Morhn, Luc :-?
Anzeige
AW: Dann könnte man aber auch eine Hilfstabelle ...
18.01.2021 15:58:34
Elise
Hallo Luc:-?,
ich habe auch an eine "Zwischendatei" gedacht und angefangen daran zu arbeiten. Danke für die Bestätigung, dass das der richtige Weg ist und danke für Deine Anleitung.
Ich schreibe nochmal wenn ich fertig bin.
Viele Grüße
E.
Na, dann viel Erfolg! owT
19.01.2021 00:30:09
Luc:-?
:-?
AW: Array aufbauen
15.01.2021 18:09:47
Daniel
Hi
Berechne die Zellbezüge mit Index.
wenn du beispielsweise in die Zelle A4 die Formel schreibst:
=Index([Datei2.xlsx]1.1 BeispielTab'!A:A;18-Zeile())
kannst du diese Formel von A4:A14 eintragen.
wenn du Manuell vorgeben willst, welche Spalte aus Datei2 übernommen werden soll, dann würde ich diese Spaltennummer in die Zeile 1 (oder eine andere freie Zeile) eintragen und das in der Formel für den Index auslesen.
dh du hast dann für den ganzen Zellbereich eine einheitliche Formel die du in einem Rutsch eintragen kannst.
die Formel in der Zelle A4 ist: =Index('[Datei2.xlsx]1.1 Beispiel-Tab'!$A:$Z;18-Zeile();A$1)"
fürs Makro dann:
Range("A4:S14").FormulaR1C1 = "=Index('[Datei2.xlsx]1.1 Beispiel-Tab'!C1:C99;18-Row();R1C)"
btw es wäre hilfreich, wenn deine Beschreibungen in sich konsitent wären.
beispielsweise sprichst du von einer Reihenfolge 1-6, später brauchst du es aber von Zeile 4-14, das sind 11 Werte, nicht 6, was ist der Reihenfolge 7-11?
dann scheibst du A4 = A14, in der dazugehörigen Formel gehst du aber auf Spalte 2 (B).
solche Unstimmigkeiten verwirren und dann weiß man nicht, was das richtige ist und worauf man die Lösung aufbauen soll.
Gruß Daniel
Anzeige
AW: Array aufbauen
15.01.2021 18:22:09
Elise
Hallo Daniel,
vielen Dank, ich versuche es.
Ich werde darauf achten, dass ich konsistent schreibe, danke für den Hinweis.
Schönen Abend noch.
Gruß
Eva

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige