Einen Teil eines Rechenblattes nach einer bestimmten Bedingung extrahieren #2

Hallo zusammen,
Im Beitrag des RagTime-Forums : http://experts.ragtime.de/experts/node/4200 wurde diskutiert, wie man einen Teil eines Rechenblattes (R1) nach einer bestimmten Bedingung extrahiert und das Ergebnis nach Rechenblatt R2 exportiert. Die Ausgangslage war diese :

R1 (vorh. Datentabelle):

r_R_rr_x
s_S_ss
t_T_tt
u_U_uu_x

Das Suchkriterium bezog sich dabei auf eine Bedingung "x", die immer nur in EINER Spalte des Suchbereichs auftaucht. Thomas Kaegi hat dazu eine Formel erstellt, die das gewünschte Ergebnis in R2 liefert.

R2 (Ergebnistabelle):

r_R_rr
u_U_uu

Ich habe mich daraufhin gefragt, wie eine Formel aussehen könnte, die weiterreichende Bedingungen erfüllen muss. Die weiterreichenden Bedingungen hier lauten so:
-> Von R1 nach R2 nur die Zellen der Zeilen übertragen, in denen "x" (an beliebiger Stelle) in der Zeile vorhanden ist UND unabhängig davon, ob in dieser Zeile eine oder mehrere Zellen leer sind.
Ausgangstabelle in R1 und Ergebnistabelle in R2 würden dann so aussehen (Ø steht für eine leere Zelle) :

R1 (vorh. Datentabelle):

r_x_R_rr
Ø_s_S_ss
t_T_tt_Ø
x_Ø_U_uu
Ø_Ø_x_zz

R2 (Ergebnistabelle):

r_R_rr
U_uu
zz

Die Bearbeitung hat mich dazu geführt, im Inventar die zusätzliche Komponente (Rechenblatt R3) anzulegen, die als reine Hilfstabelle fungiert und nicht geöffnet werden muss, da dort nur Daten für den Umwandlungsprozess abgelegt werden, die mit jeder neuen Berechnung (Befehl: Alles rechnen) wieder gelöscht werden.
Die Formelkonstruktion erscheint etwas umständlich, aber sie funktioniert (zur besseren Lesbarkeit sind hier nach jedem Formelteil Zeilenumbrüche eingefügt):

Suchlauf(R2!A1:D5;1;0;SetzeZelle('';R2!A1:D5;LfdIndex))
&
VSuchlauf(A:D;Oder(Spaltenwert(1)="x";Spaltenwert(2)='x';Spaltenwert(3)='x';Spaltenwert(4)='x');0;
SetzeZelle(Spaltenwert(1);R3!A:A;LfdZähler)&
SetzeZelle(Spaltenwert(2);R3!B:B;LfdZähler)&
SetzeZelle(Spaltenwert(3);R3!C:C;LfdZähler)&
SetzeZelle(Spaltenwert(4);R3!D:D;LfdZähler))
&
HSuchlauf(R3!1:1;Und(LfdZelle≠'';LfdZelle≠'x');;SetzeZelle(LfdZelle;R2!1:1;LfdZähler))&
HSuchlauf(R3!2:2;Und(LfdZelle≠'';LfdZelle≠'x');;SetzeZelle(LfdZelle;R2!2:2;LfdZähler))&
HSuchlauf(R3!3:3;Und(LfdZelle≠'';LfdZelle≠'x');;SetzeZelle(LfdZelle;R2!3:3;LfdZähler))&
HSuchlauf(R3!4:4;Und(LfdZelle≠'';LfdZelle≠'x');;SetzeZelle(LfdZelle;R2!4:4;LfdZähler))&
HSuchlauf(R3!5:5;Und(LfdZelle≠'';LfdZelle≠'x');;SetzeZelle(LfdZelle;R2!5:5;LfdZähler))
&
Suchlauf(R3!A:D;1;0;SetzeZelle('';R3!A:D;LfdIndex))

Erläuterung :
- Bei erneuter Berechnung löscht der erste Suchlauf den Zielbereich in R2.
- VSuchlauf durchläuft den gesamten Ausgangsbereich und setzt alle Zeilen, in denen "x" vorhanden ist in die Hilfstabelle R3.
- Die HSuchläufe suchen in R3 die jeweilige Zeile ab, filtern die leeren Zellen sowie "x" aus und setzen die verbleibenden Zellen zeilenweise in den Zielbereich R2
- Der abschließende Suchlauf löscht die Hilfstabelle in R3 für die nächste Berechnung.

Auch, wenn diese Formelkonstruktion funktioniert, sie kann dennoch nicht die Lösung sein ... Denn für jede zusätzliche Zeile im Suchbereich müsste ein weiterer HSuchlauf in der Formel ergänzt werden. Die Frage lautet also:
Wer hat einen Vorschlag, wie die Lösung mit den HSuchläufen universell umgesetzt werden kann?

Falls meine Annahme der Grundkonstruktion von vorneherein nicht der richtige Weg sein sollte, wäre die Frage:
Wie müsste die Formel für die oben genannten Bedingungen konstruiert sein?

Beste Grüße,
Michael