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

时间:2010-12-17 15:41:23

标签: 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)

我想使用命名范围,但我找不到像

这样的方法
=Count * (10*var1 + 20*var2 + 5*var3)

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

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

9 个答案:

答案 0 :(得分:6)

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

  1. 为您的列命名:选择完整列,输入名称
  2. 在公式中使用列名; excel将引用的列与当前行组合以访问单个单元格。
  3. 使用“Alex P”中的示例:

    1. 通过单击包含“D”的列标题选择列D,在名称字段中输入名称“input1”,然后按Enter键。
    2. 重复列E到F,分别使用“input2”和“input3”。
    3. 请勿定义名称“input1”[...]的其他名称,如上例所示!
    4. 使用上面示例中给出的公式
    5. 注意: 以这种方式使用命名列,您不能访问您的公式所在的任何其他行! 至少我不知道表达类似(行+ 1)...

      的可能性

答案 1 :(得分:4)

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

    D    E    F    G
2   10   15   20
3   1    2    3
4   20   30   40

现在假设我想要将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)

现在,如果我按照以下方式在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

这有助于您入门吗?

答案 2 :(得分:1)

添加到Remnant的答案:

我建议不要使用

=OFFSET(Sheet1!$D$2,0,0,COUNT(Sheet1!$D:$D),1)
作为 input1 的公式,而是建议使用
=Sheet1!$D$2:INDEX(Sheet1!$D:$D,COUNT(Sheet1"$D:$D))

它产生相同的结果 - 但是是非易失性的,即仅在前任单元格改变时重新计算。这在大型模型中要好得多!

答案 3 :(得分:1)

如果您正在使用VBA,则可以在名称框(左上角的输入框)中选择整个列并命名,例如MyCol。在您的代码中,您可以使用以下代码引用列MyCol(第12行)中的单元格:

Cells(12, Range("MyCol").Column)

答案 4 :(得分:1)

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

由此,你得到:

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

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

答案 5 :(得分:0)

您可以使用row()函数。这将返回您所在的当前行。因此,根据电子表格的布局,您可以像这样使用它:

=offset(NamedColumn1, row()-1)

-1是因为你要说的是从第1行向下移动多少行,如果你在第1行你想要为0。

这有用吗?

答案 6 :(得分:0)

使用名为named http://office.microsoft.com/en-us/excel-help/define-named-cell-references-or-ranges-HP005201536.aspx

的Excel功能

命名单元格或单元格范围

1)选择该细胞或细胞范围 2)在名称框中输入其名称(在公式窗口小部件的左侧,并具有单元名称)

您不能使用与k0

等细胞名称冲突的名称

如果公式,可以使用指定的单元格。 E,G。

= PI *半径*半径

答案 7 :(得分:0)

我还没有完全回顾过以前的答案,但我认为这更接近于OP正在寻找的@Jason Coyne。所以,我希望我得到很多票。 ; - )

如果“格式化为表格”,Excel允许您的公式按名称引用表和列。这是一篇标题为Using structured references with Excel tables的文章,详细介绍。

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

以下是一个示例的屏幕截图:

enter image description here

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

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

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

它还坚持在标题行中包含非空的唯一值(哪种有意义)。如果删除标题单元格或插入列,Excel将为您创建一个新的唯一名称并将其填入。 D'哦!

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

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

答案 8 :(得分:-1)

我想提出@Dror对细胞参考的轻微变化。这也可以:

Range("MyCol").Rows(12)