Filtern Sie Spalten basierend auf der Startzeichenfolge, lesen Sie Zahlen aus gefilterten Zellen und führen Sie Rechenoperationen aus, um eine Zusammenfassung von zwei Zeilen in Excel zu generieren

Filtern Sie Spalten basierend auf der Startzeichenfolge, lesen Sie Zahlen aus gefilterten Zellen und führen Sie Rechenoperationen aus, um eine Zusammenfassung von zwei Zeilen in Excel zu generieren

Ich habe einen Projekt- und Ressourcenzuteilungsbericht. Ich brauche Hilfe beim Erstellen der Formel zur Anzeige der Zusammenfassung im rechten Abschnitt des Berichts.

Hier sind die Spezifikationen meines Berichts:

  • Spalte A von Zeile 2 bis Zeile 15 stellt die für jedes Projekt zugewiesenen Ressourcen (Personen) dar
  • Spalte B, Spalte C ... stellt den Prozentsatz der Ressourcen dar, die jedem Projekt pro Monat zugewiesen werden
  • Jede Ressource der Spalte A wird in 2 Zellen zusammengeführt, da jede Ressource entweder in 1 oder 2 Projekten pro Monat arbeiten kann
  • Bei einer Ressource, die in einem Monat an einem einzigen Projekt arbeitet, werden beide Zellen zusammengeführt. Bei einer Ressource, die an zwei Projekten arbeitet, werden zwei Zeilen angezeigt, die das Projekt darstellen.
  • Für jedes Projekt gibt es eine Zahl, die den Prozentsatz der dem Projekt zugewiesenen Ressource darstellt.

Hier ist der Screenshot meines Berichts:

Screenshot des Arbeitsblatts zur Ressourcenzuweisung für Projekte

Hier in der Zusammenfassung stelle ich die Gesamtzahl der Wochen dar, die jede Person für jedes Projekt aufwenden wird. Um die Berechnung zu vereinfachen, gehe ich davon aus, dass jeder Monat genau 4 Wochen entspricht. Also,

  • Wenn eine Person A im Februar zu 100 % in Projekt B arbeitet, dann sollte die für die Zusammenfassung zu berücksichtigende Zahl für Projekt B 4 sein.
  • Ähnlich verhält es sich, wenn Person A im Januar zu 50-50 % an 2 Projekten arbeitet. Dann sollte die für die Summierung zu berücksichtigende Zahl 2-2 Wochen für jedes Projekt betragen.

Im Allgemeinen könnte die zusammenfassend zu berücksichtigende Zahl mathematisch wie folgt dargestellt werden:

4 *[Percentage from column] / 100

Folgendes versuche ich zu erreichen:

  1. Zeichenfolge aus Zellen lesen (F1 - J1)
  2. Führen Sie eine Suche in der Spalte „Person“ in zwei Zeilen (B2, C2...) und (B3, C3...) durch, um die Zellen abzurufen, die mit der Zeichenfolge „project“ beginnen.
  3. Filtern Sie die Zahlen aus den obigen Zellen (aus Schritt 2). Addieren Sie die Zahlen, dividieren Sie sie durch 100 und multiplizieren Sie sie mit 4 (um die Anzahl der Wochen zu erhalten).

Hier ist, was ich erstellt habe, indem ich die Antwort auf eine ähnliche Frage als Referenz genommen habe vonHier:

=IFERROR((IFERROR(SUM(--((TRIM(RIGHT(SUBSTITUTE(FILTER($B2:$C2,ISNUMBER(SEARCH(J$1,$B2:$C2)))," ",REPT(" ",99)),99))))), 0) + IFERROR(SUM(--((TRIM(RIGHT(SUBSTITUTE(FILTER($B3:$C3,ISNUMBER(SEARCH(J$1,$B3:$C3)))," ",REPT(" ",99)),99))))), 0))*4, "")

was mir 6 für Projekt B gibt. Gibt es eine Möglichkeit, dies zu vereinfachen? Ich glaube, ich mache hier viele redundante Operationen. Außerdem gibt es 0 zurück, wenn das Projekt nicht gefunden wurde. Ich bevorzuge stattdessen eine leere Zeichenfolge

Schlagen Sie gerne vor, wenn es eine bessere Möglichkeit gibt, diese Berechnung durchzuführen.

Notiz:

  1. Bei Spalten mit zwei zusammengeführten Zellen sollte die Berechnung nur einmal für diese Person durchgeführt werden.
  2. Die Berechnung meiner Zusammenfassung basiert auf Daten aus zwei Zeilen
  3. Hier verwende ich Personennamen („Person A“, „Person B“ usw.) und Projektnamen („Projekt A“, „Projekt B“ usw.) als Platzhaltertext. Im echten Bericht werden daraus echte Werte mit zufälligen Buchstaben.

PS: Dies ähnelt meiner vorherigen Frage, bei der ich eine Zusammenfassung für eine einzelne Spalte erstellt habe, wobei zwei Zellen innerhalb der Spalte zusammengeführt werden konnten:Excel - Zeilen basierend auf der Startzeichenfolge filtern, Zahlen aus gefilterten Zeilen lesen und Rechenoperation ausführen, um eine Spaltenzusammenfassung zu generieren. Hier führe ich jedoch eine Berechnung für zwei Zeilen durch, um die Zusammenfassung zu erhalten. Und verbundene Zeilenzellen müssen für die Berechnung nur einmal berücksichtigt werden.

Antwort1

Versuchen Sie es vielleicht mit diesem kürzeren Formelvorschlag.

1] In F2wird die Formel quer und nach unten kopiert:

=SUMPRODUCT(4*TEXT(SUBSTITUTE($B2:$C3,F$1,""),"0%;;;\0")) 

2] Ihre vorherige Frage kann auch mit derselben Formel gelöst werden, ich habe sie in A19:C23 eingetragen.

In B19wird die Formel quer und nach unten kopiert:

=SUMPRODUCT(0+TEXT(SUBSTITUTE(B$2:B$15,$A19,""),"0%;;;\0"))

Und,

Bearbeiten

So entfernen Sie 0

1] Verwenden des Zellenformats:

Formatieren Sie alle Formelzellen unter >> „Buchhaltung“ >> „Symbol“, wählen Sie „Keines“ >> „Dezimalstelle“ und klicken Sie auf „1“.

2] Verwenden Sie IFERROR(1(/1.......),"") und ergänzen Sie die Formel F2. Sie erhalten >>

=IFERROR(1/(1/SUMPRODUCT(4*TEXT(SUBSTITUTE($B2:$C3,F$1,""),"0%;;;\0"))),"")

Bildbeschreibung hier eingeben

Antwort2

Die Lösung ist komplizierter, da der zu verarbeitende Bereich mehrdimensional ist. (In Ihrer vorherigen Frage war es nur eine einzige Dimension.)

TEXTJOINEine Möglichkeit zur Verarbeitung besteht darin, es in ein eindimensionales Array umzuwandeln, was mit und möglich ist FILTERXML. Es gibt eine Einschränkung, da die aus der TEXTJOINFunktion resultierende Zeichenfolge nicht mehr 32,767als Zeichen enthalten darf. Wenn dies ein Problem darstellt, ist eine VBA- oder Power Query-Lösung möglicherweise besser.

Außerdem FILTERXMList es nicht in den Mac-Versionen oder in Excel Online verfügbar.

Wenn diese Einschränkungen nicht gelten, dann

F2: =IFERROR(4*SUM(FILTERXML("<t><s>" & SUBSTITUTE(FILTERXML("<t><s>" &TEXTJOIN("</s><s>",TRUE,$B2:$C3) & "</s></t>","//s[starts-with(.,'" & F$1 & "')]")," ","</s><s>") & "</s></t>","//s[last()]")),"")
  • Nach rechts und unten ausfüllen

  • Wir erstellen zunächst XML(mit TEXTJOIN), um für jede Zelle einen separaten Knoten zu erstellen.

    • Unser xPathArgument gibt nur die Knoten zurück, die start-withden Projektnamen in Zeile 1 haben.
    • Wir verwenden dann, um einen weiteren basierend auf durch Leerzeichen getrennten Knoten mit einem SUBSTITUTEzu erstellen , der den letzten Knoten zurückgibt.XMLxPath
    • Führen Sie die mathematischen Operationen durch.

Bildbeschreibung hier eingeben

BEARBEITEN:

Wenn Sie tunNICHThaben FILTERXML, versuchen Sie diese Formel(O365 Mac oder Windows und Excel Online)das eine andere Methode verwendet, um das 2D-Array zur Verarbeitung in ein 1D-Array umzuwandeln:

=IFERROR(SUM(4*TRIM(RIGHT(
   SUBSTITUTE(LET(
        seq,IF(SEQUENCE(99)=1,1,(SEQUENCE(99)-1)*99),
        x,TRIM(MID(TEXTJOIN(REPT(" ",99),TRUE,$B2:$C3),seq,99)),
        y, FILTER(x,LEFT(x,LEN(F$1))=F$1),y),
   " ",REPT(" ",99)),99))),"")

Diese Formel hat immer noch die Beschränkung auf 32.767 Zeichen. Ob Sie darauf stoßen, hängt hauptsächlich davon ab, wie viele Leerzeichen der Projektname enthält. Die zu berechnende Formel lautet ungefähr:

  • a = durchschnittliche Anzahl Zeichen in der Zelle

  • b = Anzahl der Leerzeichen in der Zelle

  • c = Anzahl der Zellen

     (a+b*99) * c
    

Wenn Sie beispielsweise 15Zeichen, 5Leerzeichen und 24Zellen hätten, käme das auf etwa 12,000Zeichen.

verwandte Informationen