Setze Bereich Setze Zelle

Hallo zusammen,

ich würde gerne von einer Tabelle A in eine Tabelle B Daten übertragen.
Die Herausforderung ist, dass die Tabelle B (Datenempfänger) keine Formeln enthalten sein dürfen.

Tabelle A (Datenträger SQL Abfrage) bekommt über eine Referenz variierende Anzahlen an
Datenzellen zugeteilt.

Die SetzeZelle-Funktion kenne ich aber gibt es auch eine SetzeBereich Funktion?
Ideal wäre SetzeBereich(TabelleA!A2:A;TabelleB!A2:A;C1) C1 wäre dann die Anzahl der Zeilen

Gruß und Danke
Felix Otto

Re: Setze Bereich Setze Zelle

#12875 On 2 September, 2020 09:53 Thomas Kaegi said,

Hallo Felix Otto

Die folgende Formel in irgend einer Zelle von TabelleA überträgt die Werte von TabelleA (Spalte A ohne Zeile 1) in die gleichen Zellen von TabelleB. Formeln werden nicht übertragen.

VSuchlauf(A:A;Und(LfdIndex>1;LfdZelle≠'');;SetzeZelle(LfdZelle;TabelleB!$A:$A;LfdIndex))

Ich fürchte allerdings, dass du folgendes Problem haben wirst: Sobald weniger Werte in TabelleA stehen als vorher bleiben die überzähligen Werte in TabelleB stehen. Es müsste in diesem Fall entweder eine zusätzliche "Löschrunde" eingebaut werden, oder es könnten grundsätzlich so viele Werte aus TabelleA/SpalteA in Tabelle B übertragen werden wie je maximal vorkommen könnten, also z.B. wenn maximal 999 Werte in TabelleA stehen können:

VSuchlauf(A2:A1000;1;;SetzeZelle(LfdZelle;TabelleB!$A2:$A1000;LfdIndex))

Wenn du lieber die erste Variante haben möchtest, dann melde dich nochmals.

Gruss, Thomas

Re: Setze Bereich Setze Zelle

#12876 On 4 September, 2020 08:19 Xilefotto said,

Hallo Thomas,

besten Dank für die Nachricht. Ich habe das Problem mit Hilfe von Thomas Eckert von Ragtime lösen können.
Folgende Formel funktioniert und ist auch dynamisch:

SpezialWenn($J$1='D';VSuchlauf(Quelle1!$A2:$A100;1;'';SetzeZelle(Index(Quelle1!A2:A100;LfdIndex);Ziel1!$A2:$A100;LfdIndex)))

Gruß
Felix

Re: Setze Bereich Setze Zelle

#12877 On 4 September, 2020 15:53 Steffen said,

Hallo Felix,

nur zum mitdenken: Die SpezialWenn-Schachtel ist jetzt nicht wirklich selbsterklärend :)

Magst Du uns noch bissi was dazu erläutern?

VG
Steffen

Re: Setze Bereich Setze Zelle

#12878 On 4 September, 2020 19:58 Thomas Kaegi said,

Hallo Steffen

Da ist erst mal "SpezialWenn" statt "Wenn". Unterschied: Bei "SpezialWenn" gibt es nur das Argument "WertFallsWahr", aber kein "WertFallsFalsch".
Das könnte ebensogut mit Wenn(Bedingung;WertFallsWahr;'') oder sogar Wenn(Bedingung;WertFallsWahr) geschrieben werden. RagTime reklamiert nämlich nicht, wenn in der Wenn-Funktion das Argument "WertFallsFalsch" fehlt.

Genau wie bei meinem Vorschlag wird mit einem Suchlauf die Quelle abgesucht. Offenbar können maximal die Zellen A2:A100 einen Wert enthalten, der übertragen werden soll, wenn die Verriegelungszelle J1 des Rechenblatts, in welchem die Formel steht, den Wert "D" enthält. Das Argument "WertFallsWahr" ist ein SetzeZelle-Befehl, der in jedem Schritt des Suchlaufs mit der Index-Funktion den Wert aus Spalte A des Rechenblatts "Quelle1" in die gleiche Zelle des Rechenblatts "Ziel1" überträgt.

Die Index-Funktion ist allerdings überflüssig. Statt Index(Quelle1!A2:A100;LfdIndex) könnte einfach LfdZelle stehen, so wie ich das in meinem Vorschlag geschrieben hatte. Der Suchlauf läuft ja über die zu kopierenden Zellen und LfdZelle bringt deshalb den genau gleichen Wert, der mit der Index-Funktion geholt wird.

Gruss, Thomas

Re: Setze Bereich Setze Zelle

#12879 On 5 September, 2020 15:35 Steffen said,

Danke, Thomas, für den Nachtrag.

Jetzt ist mir auch klar, warum ich SpezialWenn noch nie verwendet habe. (Schwaben haben nichts übrig für "ohneedigs Sach" ;)

Das D ist also nur als Trigger gedacht, hat also gegenüber einem Knopf "Jetzt übertragen" den Vorteil, dass die Zelle J1 gewissermaßen ständig überwacht wird und jede Änderung in Quelle1 sofort übertragen wird, solange D in J1 gesetzt ist.

Die Suchlauffunktionen zu durchdringen ist in der Tat nicht ganz ohne, aber sie sind GENIAL!

Euch allen ein schönes Wochenende!

VG Steffen