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

sno*_*noz 5 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
...
Run Code Online (Sandbox Code Playgroud)

所以我的公式看起来像这样

IF(A1="A",4*B1,
IF(A1="B",3*B1,
IF(A1="C",2*B1,
IF(A1="D",  B1,0))))
Run Code Online (Sandbox Code Playgroud)

问题是,此代码仅适用于第一行。对于任何其他行,我必须用正在计算的行号替换所有 1。一定有更好的方法来写这个公式。我将如何概括这一点,以便我可以在不编辑的情况下复制和粘贴公式?

Dan*_*iel 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))))
Run Code Online (Sandbox Code Playgroud)