Guten Tag liebe Excelgötter,
ich möchte das erste mal eine etwas kompliziertere Excel-Datei erstellen. Dies klappt auch sehr gut, nur an einer Stelle hänge ich fest.
Ich habe in meinem Druckbereich eine Tabelle über =Filter(Choose(Xlookup()) eingefügt, welche je nach getroffener Auswahl mal länger und mal kürzer ist. Diese funktioniert auch tatsächlich genau so wie Sie soll.
Ich möchte nun direkt unter besagte Tabelle eine weitere Tabelle mit etwa gleicher Formel einfügen.
Gibt es eine Möglichkeit den Abstand zwischen den beiden Tabellen automatisch immer gleich zu halten? z.B. erste Tabelle endet A17--> zweite Tabelle startet A20; erste Tabelle endet A5--> zweite Tabelle startet A8.
Wäre hier für jede Hilfe dankbar, da ich bisher alle mir denkbaren Ansätze einer Lösung nicht umsetzten konnte.
Hallo Aira,
bin jetzt kein Excelgott, aber evtl. kann ich trotzdem helfen.
Dazu poste doch mal eine Beispieldateii und deinen Code.
Das wird auch den wirklichen Göttern dieses Olymps helfen.
Gruß,
Lutz
Moin!
Ich sehe da keine Möglichkeit!
Durch die dynamischen Formeln ist .SpillingToRange logischerweise variabel.
Um einen #ÜBERLAUF! sicher zu verhindern, wirst Du die Formeln nebeneinander schreiben müssen.
(oder eben die Formeln einmalig per VBA in die Tabelle schreiben, dann kann man (VBA) rechnen)
Macht aber nur Sinn, wenn man das Formelergebnis gleich in den Wert umwandelt.
Gruß Ralf
Die Variante mit VBA juckt mich!
Ich bastele mal etwas …
Funktioniert natürlich
ausschließlich in Excel 365!
Modul Modul1Option Explicit
Sub Spills()
Const FormulaText$ = "=RANDARRAY(RANDBETWEEN(2,4))"
Const Abstand& = 3
Const Durchlauf& = 4
Dim i&, Start&
Start = 1
With Tabelle2
For i = 1 To Durchlauf
With .Cells(Start, 1)
.Formula2 = FormulaText
With .SpillingToRange
Start = Start + 3 + .Rows.Count
.Copy: .PasteSpecial xlPasteValues
End With
End With
Next
End With
End Sub
Ergibt:
Arbeitsblatt mit dem Namen 'Tabelle2' |
| A |
1 | 0,68959296 |
2 | 0,27481002 |
3 | |
4 | |
5 | |
6 | 0,31025713 |
7 | 0,84983332 |
8 | |
9 | |
10 | |
11 | 0,65094119 |
12 | 0,62943839 |
13 | 0,00337692 |
14 | 0,85087692 |
15 | |
16 | |
17 | |
18 | 0,76276768 |
19 | 0,70960756 |
20 | 0,75503278 |
21 | 0,84801511 |
Hi,
bitte entschuldige die späte Antwort.
Anbei eine Beispieldatei.
Lieber RPP63,
leider weiß ich rein gar nichts über VBA, ist es möglich das VBA auf meine Excel Beispieldatei zurecht zu schneidern?
Aber schon einmal vielen Dank.
Moin!
Ich bleibe bei meinen Antworten #3 und #4
Entweder nebeneinander,
oder Neuschreiben per VBA.
Dies kann man zwar ins Worksheet_Calculate() auslagern, könnte aber je nach Größe die Datei ganz schön ausbremsen.
(heißt: bei Neuberechnung Spalte zunächst löschen und die Spill-Arrays neu schreiben)
Eindeutig besser ist aber imo das Nebeneinander.
Gruß Ralf
(29.03.2021, 08:18)Aira schrieb: [ -> ]leider weiß ich rein gar nichts über VBA, ist es möglich das VBA auf meine Excel Beispieldatei zurecht zu schneidern?
Das wäre zwar möglich, würde Dir aber im produktiven Betrieb überhaupt nichts bringen, da Du
- es nicht auf Deine tatsächlichen Belange anpassen könntest
- bei Problemen im laufenden Betrieb hilflos wärst
Verstehe mich nicht falsch, aber ein Forum dient nicht dazu, Komplettlösungen für Produktivdateien zu leisten.
Dies alleine schon aus Haftungsgründen.
Schließlich wirst Du kaum Deinem Chef sagen können, wenn die Datei unbrauchbar ist:
"Das hat aber der Ralf im CEF genau so geschrieben!"
Hallo Ralf,
da muss ich mich wohl Entschuldigen.
Du hast definitiv recht, die Lösung war nur auf einmal zu einfach greifbar.
Ich werde mal zusehen das ich an einer Excel-Schulung teilnehmen werde.
Trotzdem Danke und frohe Ostern.
Du brauchst Dich nicht entschuldigen.
Ich wollte "nur" auf die Folgen hinweisen.
Eine Schulung ist immer gut.
Aber ich freue mich jetzt schon auf das Gesicht des Dozenten, wenn Du ihn auf Spill-Formeln ansprichst und wissen willst, was dieser Code-Snippet bedeutet:
If Zelle.HasSpill Then Zelle.SpillParent.SpillingToRange.Delete
Auch Dir frohe Ostern!
Hallo,
man könnte auch einfach die Formeln per VBA schreiben und über einen Ereigniscode darauf reagieren. Dann können die Tabellen mehr oder weniger Zeilen haben - der Abstand bleibt der gleiche.
Ich hatte das ja in #4 skizziert.