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:
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:
- Zeichenfolge aus Zellen lesen (F1 - J1)
- 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.
- 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:
- Bei Spalten mit zwei zusammengeführten Zellen sollte die Berechnung nur einmal für diese Person durchgeführt werden.
- Die Berechnung meiner Zusammenfassung basiert auf Daten aus zwei Zeilen
- 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 F2
wird 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 B19
wird 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"))),"")
Antwort2
Die Lösung ist komplizierter, da der zu verarbeitende Bereich mehrdimensional ist. (In Ihrer vorherigen Frage war es nur eine einzige Dimension.)
TEXTJOIN
Eine 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 TEXTJOIN
Funktion resultierende Zeichenfolge nicht mehr 32,767
als Zeichen enthalten darf. Wenn dies ein Problem darstellt, ist eine VBA- oder Power Query-Lösung möglicherweise besser.
Außerdem FILTERXML
ist 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
(mitTEXTJOIN
), um für jede Zelle einen separaten Knoten zu erstellen.- Unser
xPath
Argument gibt nur die Knoten zurück, diestart-with
den Projektnamen in Zeile 1 haben. - Wir verwenden dann, um einen weiteren basierend auf durch Leerzeichen getrennten Knoten mit einem
SUBSTITUTE
zu erstellen , der den letzten Knoten zurückgibt.XML
xPath
- Führen Sie die mathematischen Operationen durch.
- Unser
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 15
Zeichen, 5
Leerzeichen und 24
Zellen hätten, käme das auf etwa 12,000
Zeichen.