Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1512to1516
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

Wenn Wert in Zeile "OK", dann Zeilenüberschrift

Wenn Wert in Zeile "OK", dann Zeilenüberschrift
07.09.2016 09:22:40
Aaron
Hallo zusammen,
zur Abwechslung keine VBA-Frage, ich verzweifle aber trotzdem.
Ich habe über Doodle eine Umfrage gestartet, welche ich in Excel übertragen kann und dort auswerten will:
https://www.herber.de/bbs/user/108060.xls
Mein Problem ist nun folgendes:
In den Rückmeldungen wird ein bestätigter Termin mit "OK" ausgegeben.
Ich möchte nun in einem neuen Tabellenblatt alles für einen Serienbrief vorbereiten und hierzu die Uhrzeit und das Datum herausnehmen.
Soll heißen:
Blatt 2
A1:
Wenn Spalte 7 (und so weiter) "OK", dann Tag
B1:
Wenn Spalte 7 (und so weiter) "OK", dann Uhrzeit
Ich hatte jetzt nicht vor, eine riesen Wenn-Formel zu stricken und habe es mit einem WVERWEIS versucht (B17).
Die Originaltabelle geht noch weiter und hat mehrere Tage - für Versuchszwecke mal in gekürzter Version.
Lieg ich hier komplett falsch?
Oder gibt es eine andere/bessere Lösung?
Vielen Dank im Voraus für eure Rückmeldung.
Gruß
Aaron

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nicht eindeutig ...
07.09.2016 09:39:15
...
´Hallo Aaron
... meinst Du vielleicht so, oder wie sonst?
 ABCD
17Testz_1Mo 19, 11:00  
18Max MusterMo 19, 13:00Mo 19, 14:00Mo 19 14;:00


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...
Anzeige
AW: nicht eindeutig ...
07.09.2016 09:45:12
Aaron
Hallo Werner,
auf den ersten Blick, genau das was ich versucht hatte ich Worte zu fassen. :-D
Genial, vielen Dank :)
Tag und Uhrzeit wollte ich bewusst in zwei Zellen haben, aber das dürfte ich bei Bedarf noch anpassen können.
Wie sieht denn der Code zu deiner Lösung aus? ;)
Vielen Dank für deine Hilfe.
Gruß
Aaron
AW: dann mit INDEX(), AGGREGAT() und VERWEIS() ...
07.09.2016 09:59:21
...
Hallo Aaron,
... so (Formel nach rechts und unten kopieren):
 ABCDEFGHIJKLMN
3              
4 September 2016 
5 Mo 19Di 20 
6 10:0011:0012:0013:0014:0015:0010:0011:0012:0013:0014:0015:00 
7Testz_1 OK      OK    
8Max Muster   OKOKOK       
9Anzahl010111000000 
10              
11              
12              
13              
14              
15              
16              
17Testz_1Mo 19, 11:00Di 20, 12:00           
18Max MusterMo 19, 13:00Mo 19, 14:00Mo 19, 15:00          
19              

Formeln der Tabelle
ZelleFormel
B17=WENNFEHLER(VERWEIS(9;1/($A$5:INDEX($5:$5;AGGREGAT(15;6;SPALTE($A1:$EZ1)/($A7:$EZ7="ok"); SPALTE(A1)))>0); $5:$5)&", "&INDEX($6:$6;AGGREGAT(15;6;SPALTE($B1:$EZ1)/($B7:$EZ7="ok"); SPALTE(A1))); "")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...
Anzeige
Perfekt, vielen Dank!
07.09.2016 11:58:06
Aaron
Hallo Werner,
das ist klasse!
Vielen lieben Dank!
Gruß
Aaron
AW: prima, danke owT
07.09.2016 12:26:40
...
Gruß Werner
.. , - ...
Die BspTab ist eine ziemliche Chimäre, ...
08.09.2016 01:12:23
Luc:-?
…Werner,
denn sie enthält standard-formatierte Datums- und ZeitTexte, die eigentlich Zahlen sein sollten. Kopiert man Dein Jeanie-Bsp auf ein leeres Blatt, wdn die Werte in Zeilen 4 und 6 auch als echte Datums- bzw ZeitWerte interpretiert, also zu Zahlen. In dieser Situation fktioniert Deine Fml zwar noch, liefert aber nicht das gewünschte (Text-)Bild. Das Ergebnis wäre also für einen SerienBrief unbrauchbar. Da Du ja sonst auch stets an alle möglichen Unwägbarkeiten denkst, verwundert mich das denn doch etwas… ;-)
Deine Fml sollte also zur Sicherheit so aussehen:
=WENNFEHLER(VERWEIS(9;1/($A$5:INDEX($5:$5;AGGREGAT(15;6;SPALTE($A2:$EZ2)/($A8:$EZ8="ok");SPALTE(A2))) >0);$5:$5 )&", "&INDEX(TEXT($6:$6;"hh:mm;@");AGGREGAT(15;6;SPALTE($B2:$EZ2)/($B8:$EZ8="ok"); SPALTE(A2)));"")
Dabei ist der Zusatz `;@´ im Format nicht unbedingt erforderlich, denn Texte sind davon ohnehin nicht betroffen.
Noch günstiger wäre in solchen Fällen natürlich das Auslesen des original formatierten Textes (falls sich daran mal etwas ändern sollte), was aber nur per UDF gelingt:
=WENNFEHLER(VERWEIS(9;1/($A$5:INDEX($5:$5;AGGREGAT(15;6;SPALTE($A1:$EZ1)/($A7:$EZ7="ok");SPALTE(A1))) >0);$5:$5 )&", "&INDEX(GetText($6:$6);AGGREGAT(15;6;SPALTE($B1:$EZ1) /($B7:$EZ7="ok");SPALTE(A1)));"")
Allerdings hast Du anderen Eventualitäten rechnung getragen und gleich ganze Zeilen festgelegt, was ich für ungünstig halte, denn das hat merkliche Auswirkungen auf die Performance. In Xl-Fktt kann eine Reduzierung der Wirkung auf den tatsächlich benötigten Bereich eingebaut sein, bei Fmln ist das naturgemäß nicht der Fall und die Xl-Steuerung scheint das auch nicht zu optimieren. In solchen Fällen würde es eigentlich ausreichen, den Vorgabe­Bereich nur um 1-2 Zellen größer als benötigt zu machen. Wdn dann neue Spalten (bzw Zeilen) eingefügt (nicht aufkopiert bzw einfach weiter geschrieben), passen sich die Adress­Bezüge bekanntlich selber an (anderenfalls könnte man ja auch eine definierte Tabelle verwenden).
Ich würde allerdings eine formatmäßige Umgestaltung der Tabelle bevorzugen, was manches einfacher machen würde. Im Folgenden mache ich die entsprd Angaben:
 ABCDEFGHIJKLM
17Testz_1Mo 19, 11:00Di 20, 12:00          
18Max MusterMo 19, 13:00Mo 19, 14:00Mo 19, 15:00         
19Mux MasterMo 19, 12:00Mo 19, 13:00Di 20, 11:00Di 20, 14:00        
20ZWert/ZText:B4: 42614B4: Sep 16          
21Zellwert:B5: 42632C5: 42632D5: 42632E5: 42632F5: 42632G5: 42632H5: 42633I5: 42633J5: 42633K5: 42633L5: 42633M5: 42633
22Zelltext:B5: Mo 19C5: Mo 19D5: Mo 19E5: Mo 19F5: Mo 19G5: Mo 19H5: Di 20I5: Di 20J5: Di 20K5: Di 20L5: Di 20M5: Di 20
23Zellwert:B6: 0,41667C6: 0,45833D6: 0,5E6: 0,54167F6: 0,58333G6: 0,625H6: 0,41667I6: 0,45833J6: 0,5K6: 0,54167L6: 0,58333M6: 0,625
24Zelltext:B6: 10:00C6: 11:00D6: 12:00E6: 13:00F6: 14:00G6: 15:00H6: 10:00I6: 11:00J6: 12:00K6: 13:00L6: 14:00M6: 15:00
25FmlLänge:Formeln:(benannt)Zellformat:Format (B4:M4): MMM JJFormat (B5:M5): TTT TTFormat (B6:M6): hh:mm
26121B17[:D17]: {=WENNFEHLER(TEXT(INDEX(VSplit(VJoin(WENN($B7:$M7="OK";$B$5:$M$5+$B$6:$M$6;"");;-1);;1);SPALTE(B7)-1);"TTT TT, hh:mm");"")}
2775 + 58B18:M18: {=WENN(SPALTE(B8:M8)-1>ANZAHL(TagZeitOK);"";TEXT(TagZeitOK;"TTT TT, hh:mm"))}TagZeitOK: =VSplit(VJoin(WENN(B8:M8="OK";B$5:M$5+B$6:M$6;"");;-1);;1)
28136B19:M19: {=WENN(SPALTE(B9:M9)-1>ANZAHL(TempStoRd(VSplit(VJoin(WENN(B9:M9="OK";B$5:M$5+B$6:M$6;"");;-1);;1)));"";TEXT(TempStoRd();"TTT TT, hh:mm"))}
Wenn die ErgebnisZellen passend formatiert würden, könnte bei den natürlich UDF-haltigen MatrixFmln (1. singular, 2.&3. plural) auf den Zusatz der TEXT-Fkt verzichtet wdn. Da das aber einem SerienBrief als Vorlage dienen soll, habe ich das doch besser so gelöst.
Da für meine 1.Fml INDEX erforderlich ist, was Du ja regelmäßig auch zu gleichem Zweck gebrauchst, kam mir noch eine Überlegung dazu in den Sinn. Nur das 1.Argument von INDEX darf ein ZellBereich (auch unzusammen­hängend) oder ein Datenfeld sein, die anderen 3 wdn skalar verlangt. Wahrscheinlich legt die Xl-Steuerung im Zuge der sog Fml-Optimierung für nicht-skalare Argument­Angaben einen temporären Puffer an, aus dem heraus dann skalare Elemente je nach ZellPosition der Fkt an diese übergeben wdn. Das kann man per UDF wohl nur auf dem Umweg über Evaluate nutzen, wodurch die UDF (und sie enthaltende Fmln) dann aber nicht mehr (als FmlText) evaluierbar wäre. Eine bessere Methode wäre dann, INDEX als Hilfsmittel zu verwenden und so dessen Unter­stützung durch die Xl-Steuerung zu nutzen. Ich habe das mal mit meiner nicht aktiv matrix(fml)fähigen UDF Splint ausprobiert → es klappt! Während {=Splint(A7:A11)} in einer pluralen MatrixFml erwartungsgemäß nur 5-10× #WERT! liefert, kommt mit {=Splint(INDEX(A7:A11;ZEILE(A1:A5)))} das gewünschte Ergebnis zustande:
→ QuellDaten: {"x 1";"xx 2";"xxx 3";"xxxx 4";"xxxxx 5"} ⇒ Ergebnis: {"x"."1";"xx"."2";"xxx"."3";"xxxx"."4";"xxxxx"."5"}
Das könnte auch für andere einfach argumentierte UDFs (diverser Autoren) interessant sein, auch wenn sie auf ZellBezüge eingeschränkt sind, denn INDEX kann je nach Ausgangsdaten sowohl diese als auch Datenfelder liefern (bzw hier „portionieren“).
Morrn, Luc :-?
Besser informiert mit …
Anzeige
AW: Deinen Aufwand hatte ich gemieden ;-) owT
08.09.2016 11:33:50
...
Gruß Werner
.. , - ...
Sieht Dir gar nicht ähnlich, Werner, ;-)
09.09.2016 01:52:06
Luc:-?
…aber meine Ausführungen enthalten ja auch noch etwas Allgemein-Spezielleres zu INDEX!
Morrn, Luc :-?

394 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige