2016-04-05 5 views
-1

Entschuldigung, wenn der Beitrag tatsächlich ein Duplikat ist. Konnte einfach nichts Ähnliches googeln und bin beim Anstecken etwas festgefahren. Ich versuche Zellen in einem Blatt zu füllen auf Datum in Reihen eines anderen Blattes abhängig, wie diese:Zellen auffüllen, die durch Daten definiert sind Zeitraum

Sheet1 - Erfassungsblatt

ID | Name | Start date | End date 
10 | Mike | 1.06.2016 | 2.06.2016 
13 | Dido | 1.06.2016 | 5.06.2016 
8 | Rene | 2.06.2016 | 20.06.2016 

Sheet2 - Bericht Blatt

ids/dates | 1.06.2016 | 2.06.2016 | 3.06.2016 | date+1 
    8   |   | Rene  | Rene  | Rene 
10   | Mike  | Mike  |   | 
13   | Dido  | Dido  | Dido  | Dido 

Spalte Name Zellen müssen in Blatt2 ausgefüllt werden, abhängig von Sheet1 Spalten-ID, Startdatum, Enddatum. Die Position der bevölkerten Zelle wird in Blatt2 nach Spalten-ID und Zeile Datum definiert, die in Blatt1 denselben Werten entsprechen sollten.

+0

Mark Flagge war jeder Wert oder eine bedingte Formatierung. Ich habe es entfernt und einen weiteren Spaltennamen hinzugefügt. Der Zellenname sollte je nach ID und Datumsbereich ausgefüllt werden. – user2047710

Antwort

0

Dieser Bericht könnte mit Hilfe einer Formel durchgeführt werden. Bitte, check this Example File.


Annahmen

Angenommen, Sie haben Sheet1 mit Daten:

  • Col A: ID
  • Col B:
  • Col C Vorname: Startdatum
  • Spalte D: Enddatum

Fall 1. sind IDs einzigartig.

zu Sheet2 gehen und diese Formel in sie einfügen:

={{"ids/dates";filter(Sheet1!A2:A,Sheet1!A2:A<>"")},{ArrayFormula(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1));ArrayFormula(if(--(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1)>=filter(Sheet1!C2:C,Sheet1!C2:C<>0))*--(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1)<=filter(Sheet1!D2:D,Sheet1!C2:C<>0))=1,VLOOKUP(FILTER(Sheet1!A2:A,Sheet1!A2:A<>""),Sheet1!A:B,2,0),""))}} 

Das ist alles. Der Bericht wird automatisch erweitert, wenn neue Daten auf Sheet1 eintreffen. Der Bericht gibt einen Fehler zurück, wenn die Daten in Sheet1 nicht vollständig sind (Namen oder Daten fehlen).


Fall 2. IDs sind nicht eindeutig.

Diese Lösung funktioniert, wenn IDs nicht eindeutig sind, IDs werden zusammen gruppiert. Eine ID gehört in diesem Fall zu einer Person.

Die Formel wird etwas länger sein:

={{"ids/dates";sort(UNIQUE(filter(Sheet1!A2:A,Sheet1!A2:A<>"")))},{ArrayFormula(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1));ArrayFormula(if(QUERY(QUERY({filter(Sheet1!A2:A,Sheet1!A2:A<>""),ArrayFormula((--(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1)>=filter(Sheet1!C2:C,Sheet1!C2:C<>0))*--(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1)<=filter(Sheet1!D2:D,Sheet1!C2:C<>0))))},"select Col1, sum(Col"&JOIN("), sum(Col",ArrayFormula(COLUMN(OFFSET(B2,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))))&") group by Col1"),"Select Col"&JOIN(", Col",ArrayFormula(COLUMN(OFFSET(B2,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))))&" where Col1>0",0)=1,VLOOKUP(sort(UNIQUE(filter(Sheet1!A2:A,Sheet1!A2:A<>""))),Sheet1!A:B,2,0),""))}} 

Siehe example here.


Fall 3. IDs nicht eindeutig zuzuordnen sind. One ID <> ein Name

Hier ist working example, bitte überprüfen Sie es. Dieser Fall ist der schwerste. Wir können mehrere IDs haben, die sich auf mehrere Namen beziehen.Die endgültige Formel:

={{"ids/dates",ArrayFormula(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1))};{sort(UNIQUE(FILTER(Sheet1!A2:A,Sheet1!A2:A<>""))),ArrayFormula(IFERROR(VLOOKUP(QUERY(QUERY({FILTER(Sheet1!A2:B,Sheet1!A2:A<>""),ArrayFormula(--(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1)>=filter(Sheet1!C2:C,Sheet1!C2:C<>0))*--(add(MIN(Sheet1!C:D),COLUMN(OFFSET(A1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))-1)<=filter(Sheet1!D2:D,Sheet1!C2:C<>0))*row(OFFSET(A1,,,rows(FILTER(Sheet1!A2:B,Sheet1!A2:A<>"")))))},"select Col1, sum(Col"&JOIN("), sum(Col",ArrayFormula(COLUMN(OFFSET(C1,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))))&") group by Col1"),"Select Col"&JOIN(", Col",ArrayFormula(COLUMN(OFFSET(B2,,,1,MAX(Sheet1!C:D)-MIN(Sheet1!C:D)))))&" where Col1>0",0),{ArrayFormula(row(OFFSET(A1,,,rows(FILTER(Sheet1!A2:B,Sheet1!A2:A<>""))))),FILTER(Sheet1!A2:B,Sheet1!A2:A<>"")},3,0)))}} 

Die Formel falsch schneiden, wenn zwei Datumsbereiche funktioniert:

102 Mike 6/21/2016 6/27/2016 
102 Mike 6/11/2016 6/22/2016 
+0

Großartig. Ich werde eine Woche lang begreifen, wie es funktioniert. Ein Problem jedoch, IDs sind nicht eindeutig, sie werden für verschiedene Daten und Namen erneut angefordert. Es sind keine eindeutigen Zeilennummern. – user2047710

+0

Gehört eine ID nur zu einer Person? –

+0

Nein, manchmal ändert sich der Name. – user2047710

Verwandte Themen