von AhQ » Mi, 13.08.2008 00:01
Hallo,
das ist gar nicht kompliziert, es schaut nur gewöhnungsbedürftig aus. Also, gehen wir es an...
=WENN(SVERWEIS(K12;$H$2:$M$7;$H11+1;0)<=1;"";VERGLEICH($H11;INDIREKT(ADRESSE(TAG(K12)+1;2+K13)&":F"&TAG(K12)+1);0))
Der SVerweis sucht das Datum (k12) in der Tabelle mit den Anzahl der Diensten ($H$2:$M$7). Die ist ja so aufgebaut, daß Dienst 1 in der 2. Spalte steht, Dienst 2 in der 3. usw. Der SVerweis hat als 3. Parameter die Suchspalte. Da nehm ich mir den Dienst, den ich such ($H11, in der Tabelle steht eigentlich nur eine Zahl, das "Dienst" ist im Zahlenformat). Weil aber Dienst 1 in Spalte 2, Dienst 2 in Spalte 3 usw steht, addiere ich diese 1 dazu ($H11+1). Wenn der SVerweis <=1 ist, weiß ich, daß der Dienst an diesem Tag nur einmal vergeben wurde und laß die Zelle leer (""). Wenn nicht, vergleich ich die Dienstnummer ($H11) wieder mit der entsprechenden Zeile der Ausgangstabelle, nur lassen wir hier den Anfang jetzt wandern.
Wir haben in k13 (also der ersten Zeile des Dienst 1) stehen =VERGLEICH($H11;$B$2:$F$2;0). Damit bekomm ich die Anzahl der Spalte, in der die zu suchende Zahl gefunden wird. Steht sie in Spalte C, bekomm ich 2 (ich fang ja in Spalte B an, das wäre dann 1, D wäre 3 usw). Der Vergleich von da oben, der in H14 steht, ist im Grunde genau das Gleiche, nur startet der Suchbereich nicht in Spalte B, sondern in Spalte B + das Ergebnis aus H13, also dem Ergebnis von VERGLEICH($H11;$B$2:$F$2;0). Schauen wir uns jetzt mal den Spaß nochmal an:
VERGLEICH($H11;INDIREKT(ADRESSE(TAG(K12)+1;2+K13)&":F"&TAG(K12)+1);0)
VERGLEICH($H11;...) ist ja klar, der Suchbereich wird jetzt zusammengesetzt. Dafür brauchen wir als erstes Mal den INDIREKT(). ADRESSE hat als Parameter (Zeile;Spalte;Absolut;Tabelle). Die hinteren brauchen wir nicht. Machen wir erst mal Spalte. Bei ADRESSE() heißen die nicht A, B, C, sondern 1, 2, 3; d.h. mit 2+K13 sag ich der Formel "Starte in Spalte B (2)+ das, was der Vergleich in k13 gebracht hat". Wenn also in k13 eine Übereinstimmung in der 1.Spalte des Suchbereiches vorliegt (also in dem Fall in Spalte B), dann sag ich in k14 der ADRESSE als Startspalte 2+1, also Spalte C. Damit ist schon mal ausgeschlossen, daß das gleiche Ergebnis noch einmal ausgegeben wird.
Der erste Parameter ist eine einfache Anpassung der Suchzeile an das Datum. In der Tabelle A1:F5 steht der 1.1. in Zeile 2 etc. In K12 steht das Datum 1.1., ich nehm da also den Tag und addiere eine 1, um auf Zeile 2 zu kommen. Bei den anderen Daten funktioniert das dann natürlich synonym.
Das &":F"&TAG(K12)+1 ist nur das hintere Ende des Suchbereichs des Vergleichs, das :F mußt Du dann entsprechend Deiner Tabelle angleichen.
Ist das jetzt verständlich? Wenn nicht, dann kann ich Dir gerne helfen, das soll dann kein Problem sein.
Viele Grüße
AhQ
Hallo,
das ist gar nicht kompliziert, es schaut nur gewöhnungsbedürftig aus. Also, gehen wir es an...
=WENN(SVERWEIS(K12;$H$2:$M$7;$H11+1;0)<=1;"";VERGLEICH($H11;INDIREKT(ADRESSE(TAG(K12)+1;2+K13)&":F"&TAG(K12)+1);0))
Der SVerweis sucht das Datum (k12) in der Tabelle mit den Anzahl der Diensten ($H$2:$M$7). Die ist ja so aufgebaut, daß Dienst 1 in der 2. Spalte steht, Dienst 2 in der 3. usw. Der SVerweis hat als 3. Parameter die Suchspalte. Da nehm ich mir den Dienst, den ich such ($H11, in der Tabelle steht eigentlich nur eine Zahl, das "Dienst" ist im Zahlenformat). Weil aber Dienst 1 in Spalte 2, Dienst 2 in Spalte 3 usw steht, addiere ich diese 1 dazu ($H11+1). Wenn der SVerweis <=1 ist, weiß ich, daß der Dienst an diesem Tag nur einmal vergeben wurde und laß die Zelle leer (""). Wenn nicht, vergleich ich die Dienstnummer ($H11) wieder mit der entsprechenden Zeile der Ausgangstabelle, nur lassen wir hier den Anfang jetzt wandern.
Wir haben in k13 (also der ersten Zeile des Dienst 1) stehen =VERGLEICH($H11;$B$2:$F$2;0). Damit bekomm ich die Anzahl der Spalte, in der die zu suchende Zahl gefunden wird. Steht sie in Spalte C, bekomm ich 2 (ich fang ja in Spalte B an, das wäre dann 1, D wäre 3 usw). Der Vergleich von da oben, der in H14 steht, ist im Grunde genau das Gleiche, nur startet der Suchbereich nicht in Spalte B, sondern in Spalte B + das Ergebnis aus H13, also dem Ergebnis von VERGLEICH($H11;$B$2:$F$2;0). Schauen wir uns jetzt mal den Spaß nochmal an:
VERGLEICH($H11;INDIREKT(ADRESSE(TAG(K12)+1;2+K13)&":F"&TAG(K12)+1);0)
VERGLEICH($H11;...) ist ja klar, der Suchbereich wird jetzt zusammengesetzt. Dafür brauchen wir als erstes Mal den INDIREKT(). ADRESSE hat als Parameter (Zeile;Spalte;Absolut;Tabelle). Die hinteren brauchen wir nicht. Machen wir erst mal Spalte. Bei ADRESSE() heißen die nicht A, B, C, sondern 1, 2, 3; d.h. mit 2+K13 sag ich der Formel "Starte in Spalte B (2)+ das, was der Vergleich in k13 gebracht hat". Wenn also in k13 eine Übereinstimmung in der 1.Spalte des Suchbereiches vorliegt (also in dem Fall in Spalte B), dann sag ich in k14 der ADRESSE als Startspalte 2+1, also Spalte C. Damit ist schon mal ausgeschlossen, daß das gleiche Ergebnis noch einmal ausgegeben wird.
Der erste Parameter ist eine einfache Anpassung der Suchzeile an das Datum. In der Tabelle A1:F5 steht der 1.1. in Zeile 2 etc. In K12 steht das Datum 1.1., ich nehm da also den Tag und addiere eine 1, um auf Zeile 2 zu kommen. Bei den anderen Daten funktioniert das dann natürlich synonym.
Das &":F"&TAG(K12)+1 ist nur das hintere Ende des Suchbereichs des Vergleichs, das :F mußt Du dann entsprechend Deiner Tabelle angleichen.
Ist das jetzt verständlich? Wenn nicht, dann kann ich Dir gerne helfen, das soll dann kein Problem sein.
Viele Grüße
AhQ