これを非常にエレガントに行う方法があると確信していますが、必要な脳細胞が最も少ないアプローチがあります。:-)あなたはすでに解決策を持っていますが、問題は、それを設定し、他の場合のために修正するために多くの手作業を必要とすることです。手動で行ったことを実装するテンプレートアプローチに焦点を当てました。作成は簡単かつ高速で、変更することなく他のケースで再利用できます。これにより、ニーズが変化した場合の調整とトラブルシューティング、および他のユーザーへの説明が簡単なフォームが保持されます。
あなたはあなた自身のワークシートといくつかの違いに気付くでしょう。
非表示の列がいくつかあります。計算を支援するヘルパー列をいくつか追加しました。
他の列の順序に一貫性を持たせるために、成績列とクレジット列を逆にしました。これにより、式をコピーして、変更することなくテンプレートを作成できます。
見出しの下に空白行を挿入しました。一部の数式は前の行を参照するため、データの最初の行の数式には、列全体に使用できる単一の簡単な数式を作成するために、上の空白セルが必要です。
グループ列内では、すべてが計算に使用されるため(ゼロを含む)、すべてに値があります。ゼロよりも空白のセルを好む場合は、ゼロが表示されないようにセルをフォーマットできます(ただし、それらはゼロとして扱われます)。
単純な式で平均を計算できるように、平均を一番下の行に移動しました(実際、そこに配置する必要はありませんが、そのように表示する方が直感的です)。追加のコース用に任意の数の行を残しました。遭遇する可能性のあるコースの最大数に応じて、必要な数だけ作成します。
ここでは、すべての列が非表示になっています。
すべての行に同じ式を使用することにより、これを設定するのは簡単です。最初の行に数式を入力し、必要に応じて行をコピーするだけです。また、いくつかの異なる式があるため、それらを異なるグループに複製するには、コピーして貼り付けるだけです。最初の行を作成するときに一時的にエラー値を取得しても心配する必要はありません。数式は、まだ数式を入力していないセルを参照している場合があります。
フォーミュラ
1/4合計クレジット
これをC21に貼り付けました。任意の数の余分な行を残して、より多くのコースを追加できるようにするためです。空のセルは結果に影響しないため、範囲全体を使用して計算されます。これにより、任意の数のコースを使用できます。潜在的なコースの3〜20の行範囲の式:=SUM(C3:C20)/4
累積クレジット
各グループのクレジットの開始位置と終了位置を把握するために、累積クレジット(または未割り当てのクレジットの残り)を計算するヘルパー列があります。これらは列D、H、およびLです(4番目のグループには3番目のグループの後に残っているすべてのものが含まれているため、計算がいくらか節約されます)。必要に応じてドラッグしたりコピーしたりできる(潜在的な行を埋める)数式は次のとおりです。
D3: =SUM(C$3:C3)
H3: =SUM(G$3:G3)
L3: =SUM(K$3:K3)
D3に数式を入力し、それをH3およびL3にコピーできます。
未割り当てのクレジット
これらのヘルパー列は、各グループの割り当て後に残っているクレジットを計算します。これらは列GおよびKです。列Oで4番目のグループのクレジットが計算される方法でもあります。式は次のとおりです。
G3: =C3-E3
K3: =G3-I3
O3: =K3-M3
繰り返しになりますが、G3に数式を入力し、それをK3とO3にコピーできます。
グループのクレジット
グループ1〜3のクレジットは、次のように計算されます。前のコースの(残りの)累積クレジットが合計の1/4を超える場合、現在のコースは次のグループに属している必要があるため、ゼロのクレジットが割り当てられます。それ以外の場合、割り当てられるのは、実際のコースクレジットの最小値または合計1/4に達するのに必要な金額です。式は次のとおりです。
E3: =IF(D2>$C$21,0,MIN(C3,$C$21-D2))
I3: =IF(H2>$C$21,0,MIN(G3,$C$21-H2))
M3: =IF(L2>$C$21,0,MIN(K3,$C$21-L2))
E3式を入力してから、I3およびM3にコピーできます。
重さ
重みは、グループに割り当てられたコースの単位と合計1/4を比較します。これらの式は次のとおりです。
F3: =E3/$C$21
J3: =I3/$C$21
N3: =M3/$C$21
P3: =O3/$C$21
F3式を入力し、それをJ3、N3、およびP3にコピーできます。
グループ平均
グループ平均は、グレードと関連する重量列のSUMPRODUCTです。これらの式は次のとおりです。
E21: =SUMPRODUCT($B3:$B20,F3:F20)
I21: =SUMPRODUCT($B3:$B20,J3:J20)
M21: =SUMPRODUCT($B3:$B20,N3:N20)
O21: =SUMPRODUCT($B3:$B20,P3:P20)
E21数式を入力して、I21、M21、およびO21にコピーできます。
これを汎用形式で設定すると、式を再入力することなくテンプレートのように使用できます。テンプレートを別のワークシートにコピーして、新しいコースデータを入力するだけです。
よりきれいにする
前述のように、ヘルパー列を非表示にして、ゼロ値を抑制することができます。数式が事前に入力されているがコース情報がない行の値を「非表示」にすることもできます。これは、グループと重みの列の式をIFテストでラップすることによって行われます。
追加のコースの行を追加すると、[クレジット]列が最後に入力される値になると想定し、空であるかどうかを確認し、空の場合は上記の式ではなく計算列に表示します。 。次のように式をラップします: `= IF(ISBLANK($ C3)、" "、formula_above)。したがって、たとえば、グループ1の列は次のようになります。
E3: =IF(ISBLANK($C3),"",IF(D2>$C$20,0,MIN(C3,$C$20-D2)))
F3: =IF(ISBLANK($C3),"",E3/$C$20)
次のスクリーンショットでは、行3〜20に数式を事前に入力し、上記のように非表示にします(非表示のヘルパー列を非表示にする必要はありません)。
コース10(コース名、成績、単位のみ)を追加したことに注意してください。計算された値が行に表示され、グループが追加データに合わせて調整され、平均に追加のコースが反映されます。私はLibreOffice Calcで例を実行しましたが、これはゼロ値を抑制する機能(AFAIK)を持たないため、完全に見当がつかない例を説明できませんでした。