Excel,从同一行但不同的列获取值

时间:2012-12-22 15:42:33

标签: excel formula libreoffice

我正在尝试在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 个答案:

答案 0 :(得分:4)

在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))))