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。必须有更好的方法来编写这个公式。我将如何概括这一点,以便我可以复制和粘贴公式而不进行编辑?

4

1 回答 1

5

In Excel you can copy and paste a formula, or fill-down a formula and it will automatically update the references for you. Have you tried copying the formula down? Otherwise you can do indirect formulas that use commands like INDIRECT and ROW, but I cannot guarantee those will convert to LibreOffice.

If you need to use INDIRECT formulas, it'd look something like this:

=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 回答