5

ExcelでGPA計算機を作成しようとしています(実際にはLibreOfficeですが、同じように機能します)。助けが必要なのは、品質ポイントの計算です。私は C や類似の言語でしかコーディングしたことがないので、スプレッドシートとその表記法は私にとって非常になじみのないものです。

ご存じない場合は、GPA は合計品質ポイントを合計クレジット時間で割って計算されます。品質ポイントは、特定のクラスで 4 段階に設定された成績にクラスのクレジット値を掛けたものです。たとえば、4 時間のクラスで B を取得した場合、そのクラスの品質ポイントは 3*4 = 12 になります。17 時間の学期を取り、63 の品質ポイントを獲得した場合、その学期の GPA は 63/17 = 3.706 です。

要するに、私のスプレッドシートはこのように設定されています

         A          B           C
       GRADE     CREDITS     QUALITY
1        B          3           9
2        A          4          16
3        B          1           3
...

私の式は次のようになります

IF(A1="A",4*B1,
IF(A1="B",3*B1,
IF(A1="C",2*B1,
IF(A1="D",  B1,0))))

問題は、このコードが行 1 でしか機能しないことです。他の行については、すべての 1 を計算中の行番号に置き換える必要があります。この式を書くためのより良い方法があるに違いありません。これを一般化して、数式を編集せずにコピーして貼り付けるにはどうすればよいですか?

4

1 に答える 1

5

Excel では、数式をコピーして貼り付けるか、数式を入力すると、参照が自動的に更新されます。式をコピーしてみましたか?それ以外の場合は、INDIRECT や ROW などのコマンドを使用する間接的な数式を実行できますが、それらが LibreOffice に変換されることは保証できません。

INDIRECT 式を使用する必要がある場合は、次のようになります。

=IF(INDIRECT("A" & ROW())="A",4*INDIRECT("B" & ROW()),
IF(INDIRECT("A" & ROW())="B",3*INDIRECT("B" & ROW()),
IF(INDIRECT("A" & ROW())="C",2*INDIRECT("B" & ROW()),
IF(INDIRECT("A" & ROW())="D",  INDIRECT("B" & ROW()),0))))
于 2012-12-22T15:54:52.210 に答える