如何在excel公式中使用命名列

Jas*_*yne 5 excel range formula named

我知道如何在excel中创建一个命名范围.

我有一个电子表格,各种列作为参数,最后是最后一个单元格中的公式.这在每一行中重复多次,每行具有不同的数据集,并且更新公式以引用正确的行索引.

然而,公式看起来像(3行值):

=G2*(10*D2 + 20*E2 + 5*F2)
=G3*(10*D3 + 20*E3 + 5*F3)
=G4*(10*D4 + 20*E4 + 5*F4)
Run Code Online (Sandbox Code Playgroud)

我想使用命名范围,但我无法找到一种方法来做类似的事情

=Count * (10*var1 + 20*var2 + 5*var3)
Run Code Online (Sandbox Code Playgroud)

其中count,var1,var2和var3自动更新为当前行的特定列.我可以为每个单元格创建一个命名范围,但这没有用.我可以为列命名范围,但后来我找不到将偏移量放入公式的方法.

此外,这一点的全部意义在于可读性,因此如果它最终成为一些令人讨厌的复杂公式函数调用,那可能并没有太大帮助.

小智 7

很简单,至少在使用Excel 2010时:

  1. 命名列:选择完整列,输入名称
  2. 在公式中使用列名; excel将引用的列与当前行组合以访问单个单元格.

使用"Alex P"中的示例:

  1. 通过单击包含"D"的列标题选择列D,在名称字段中输入名称"input1",然后按Enter键.
  2. 重复列E到F,分别使用"input2"和"input3".
  3. 请勿定义名称"input1"[...]的其他名称,如上例所示!
  4. 使用上面例子中给出的公式

注意:以这种方式使用命名列,您不能访问公式所在的任何其他行!至少我不知道表达类似(行+ 1)的可能性......


Ben*_*pel 5

我建议创建一个Table。选择您的范围A1:H4,然后转到表格小部件 > 新建 > 插入带有标题的表格(在 Mac 上)。这将标记A2:H4为表格的正文和A1:H4标题。

从中,你得到:

  • 无论您在标题列中输入什么,都会自动定义该列的名称,例如Count, Radius, Density,Height
  • 然后,您可以使用编写公式 =[@Count]*(10*[@Radius] + 20*[@Density] + 5*[@Height])
  • 当您更改单元格中的公式时H2,Excel 会自动将此公式“复制”到列中的所有单元格H。因此,公式中不再出现意外的不一致。
  • 当您需要添加另一行时,只需单击最后一个单元格(在我们的示例中H4)并点击Tab。Excel 添加另一行,并确保将您的公式“复制”到新行中。
  • 如果您需要总计行,请使用“表格”小部件中的“总计行”复选框添加它。Excel 会自动添加总计行。如果单击总计行中的任何单元格,您可以使用“??”更改“总计公式”。按钮,例如计算列的平均值而不是总和。
  • 如果您有一个很长的表格并向下滚动以使标题不再可见,Excel 会自动显示列标题而不是列名称(Count而不是G例如)。

我真的可以推荐视频You Suck at Excel with Joel Spolsky它解释了所有这些。


Mar*_*ore 5

我还没有完全审查之前的答案,但我认为这更接近OP所寻找的@Jason Coyne。所以,我希望我能得到很多赞成票。;-)

如果您“格式化为表格”,Excel 允许您的公式按名称引用表格和列。这是一篇标题为“使用 Excel 表格的结构化引用”的文章,其中详细介绍了这一点。

FWIW,看起来这个功能从 Excel 2007 就已经可用了。

这是示例的屏幕截图:

在此输入图像描述

您应该能够看到 E2 中的公式与=[@Count] * (10*[@Var1] + 20*[@Var2] + 5*[@Var3])@jason-coyne 想要输入的公式非常接近。

我不喜欢你被迫选择一种风格(或者如果你没有看到你喜欢的风格,就定义一种新的风格)。好消息是您可以根据需要重新格式化单元格,而无需撤消“表格性”。

它坚持打开自动过滤器。但是,自动过滤器很容易关闭(请参阅“表格工具设计”菜单下的“过滤器按钮”复选框)。

它还坚持在标题行中具有非空的唯一值(这有点有意义)。如果您删除标题单元格或插入列,Excel 将创建一个新的、唯一的名称并为您填充。噢!

如果您希望一列没有标题,则可以输入撇号 ('),后跟一个或多个空格。请记住,标题值必须是唯一的,因此如果您想要多列没有标题,请继续添加空格。

如果您想下载屏幕截图中的示例工作簿,请点击以下链接: https: //filebin.ca/3vfaSDn4NLEA/SampleWorkbook.xlsx


Ale*_*x P 4

假设我在第 2 行到第 4 行的 D 列到 F 列中设置了以下数字:

    D    E    F    G
2   10   15   20
3   1    2    3
4   20   30   40
Run Code Online (Sandbox Code Playgroud)

现在假设我希望 D 列中的值为input1,E 列为input2,F 列为input3

“插入” > “名称” > “定义...”中

input1 RefersTo =OFFSET(Sheet1!$D$2,0,0,COUNT(Sheet1!$D:$D),1)
input2 RefersTo =OFFSET(Sheet1!$E$2,0,0,COUNT(Sheet1!$E:$E),1)
input3 RefersTo =OFFSET(Sheet1!$F$2,0,0,COUNT(Sheet1!$F:$F),1)
Run Code Online (Sandbox Code Playgroud)

现在,如果我在 G 列中写下公式,如下所示,我应该得到正确的答案:

G2 =(10*input1+20*input2+30*input3) // 1000
G3 =(10*input1+20*input2+30*input3) // 140
G5 =(10*input1+20*input2+30*input3) // 2000
Run Code Online (Sandbox Code Playgroud)

  • 人们会认为,经过30年的发展,微软一定会想到一种更直观的方法来解决这个问题。 (9认同)