加重平均で使用するための部分値の計算


3

次の情報が記載されたスプレッドシートがあります。

  • 列Aにはコースのリストが含まれています(コース1、コース2など)。
  • 列Bには、各コースで利用可能なクレジット数が含まれています
  • 列Cには、整数(72、63など)で表されるグレードが含まれます

この情報は、最高から最低まで、グレード別にソートされます。

この情報を使用して、利用可能な合計クレジット数に基づいてコースを4つの等しいグループにグループ化し、各グループの加重平均を決定する必要があります。ただし、クレジットは常に均等に分割されるわけではなく、コースの一部が最初の加重平均にカウントされ、残りのコースが2番目の加重平均にカウントされる場合があります。たとえば、私は持っているかもしれません:

        Credits Grade
Course 1    3   75
Course 2    2   75
Course 3    3   72
Course 4    3   72
Course 5    3   72
Course 6    4   70
Course 7    4   67
Course 8    3   67
Course 9    4   63

Total credits: 29
1/4 of total credits: 7.25

したがって、最初の加重平均は、コース1の全3クレジット、コース2の全2クレジット、およびコース3の3クレジットのうち2.25を使用します。コース3の残りの0.75クレジットは、2番目の加重平均にカウントされます。

数学は難しくないので、ブレーク/部分クレジットがどこに行くかを手動で計算できます(下のリンク画像のように)。ただし、4つのセクションの作成を自動化するために使用できる関数(または一連の関数)があるかどうかを知りたいので、重み関数と平均関数を実行できます。私が答えに最も近づいたのは、D3に次の式を入れることです:= IF(SUM($ B $ 2:B3)<B12、B3、B3-(SUM($ B $ 2:B3)-$ B $ 12) )クレジットがマイナスになるまでコピーダウンします。その後、残りをFに転送し、その列の数式をコピーして編集します。非常に時間がかかり、エラーが発生しやすいので、もっとエレガントなソリューションがあることを望んでいます。

目的の最終結果を含むExcelファイルのスクリーンショット


1
あなたが尋ねたものの仕組みを行うにはさまざまな方法がありますが、まだいくつかの答えを得ていないことに驚いています。ただし、結果が何を示しているかを把握しようとしています。コースをパフォーマンスの4つの間隔に分割し、各間隔の平均を示します。しかし、その情報はどのように使用または解釈されますか?
fixer1234

コメントと質問をありがとう。4つの平均は4つのグレード/マークを表します。スプレッドシートの全体的な目的は、交換学生が受講したコースで受け取ったアメリカの手紙のグレードを英国のマークに変換することです(簡単にするために上記の例からアメリカの手紙のグレードの列を削除しました)。コースごとに変換されたマークを受け取ったら、コースの完全なセットを同じ重量の4つのグループに変換して、4つのマーク/グレードを生成する必要があります(加重平均を使用)。これらの4つの等級は、全体的な程度の分類(全体的な等級)を生成するために研究の終了時に使用されている
Jeni

回答:


2

これを非常にエレガントに行う方法があると確信していますが、必要な脳細胞が最も少ないアプローチがあります。:-)あなたはすでに解決策を持っていますが、問題は、それを設定し、他の場合のために修正するために多くの手作業を必要とすることです。手動で行ったことを実装するテンプレートアプローチに焦点を当てました。作成は簡単かつ高速で、変更することなく他のケースで再利用できます。これにより、ニーズが変化した場合の調整とトラブルシューティング、および他のユーザーへの説明が簡単なフォームが保持されます。

スクリーンショット1

あなたはあなた自身のワークシートといくつかの違いに気付くでしょう。

  • 非表示の列がいくつかあります。計算を支援するヘルパー列をいくつか追加しました。

  • 他の列の順序に一貫性を持たせるために、成績列とクレジット列を逆にしました。これにより、式をコピーして、変更することなくテンプレートを作成できます。

  • 見出しの下に空白行を挿入しました。一部の数式は前の行を参照するため、データの最初の行の数式には、列全体に使用できる単一の簡単な数式を作成するために、上の空白セルが必要です。

  • グループ列内では、すべてが計算に使用されるため(ゼロを含む)、すべてに値があります。ゼロよりも空白のセルを好む場合は、ゼロが表示されないようにセルをフォーマットできます(ただし、それらはゼロとして扱われます)。

  • 単純な式で平均を計算できるように、平均を一番下の行に移動しました(実際、そこに配置する必要はありませんが、そのように表示する方が直感的です)。追加のコース用に任意の数の行を残しました。遭遇する可能性のあるコースの最大数に応じて、必要な数だけ作成します。

ここでは、すべての列が非表示になっています。

スクリーンショット2

すべての行に同じ式を使用することにより、これを設定するのは簡単です。最初の行に数式を入力し、必要に応じて行をコピーするだけです。また、いくつかの異なる式があるため、それらを異なるグループに複製するには、コピーして貼り付けるだけです。最初の行を作成するときに一時的にエラー値を取得しても心配する必要はありません。数式は、まだ数式を入力していないセルを参照している場合があります。

フォーミュラ

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に数式を事前に入力し、上記のように非表示にします(非表示のヘルパー列を非表示にする必要はありません)。

スクリーンショット3

コース10(コース名、成績、単位のみ)を追加したことに注意してください。計算された値が行に表示され、グループが追加データに合わせて調整され、平均に追加のコースが反映されます。私はLibreOffice Calcで例を実行しましたが、これはゼロ値を抑制する機能(AFAIK)を持たないため、完全に見当がつかない例を説明できませんでした。


fixer1234に感謝します-明確で、包括的で、エレガントで十分な私の答え このような詳細かつ明確にソリューションの概要を説明していただき、ありがとうございます。本当に感謝しています!
ジェニ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.