我知道如何在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自动更新为当前行的特定列。我可以为每个单元格创建一个命名范围,但这没有用。我可以为列命名范围,但后来我找不到将偏移量放入公式的方法。
此外,这一点的全部意义在于可读性,因此如果它最终成为一些令人讨厌的复杂公式函数调用,那可能无助于此。
答案 0 :(得分:6)
简单,至少在使用Excel 2010时:
使用“Alex P”中的示例:
注意: 以这种方式使用命名列,您不能访问您的公式所在的任何其他行! 至少我不知道表达类似(行+ 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
标记为标题。
由此,你得到:
Count
,Radius
,Density
,Height
=[@Count]*(10*[@Radius] + 20*[@Density] + 5*[@Height])
H2
中的公式时,Excel会自动将此公式“复制”到列H
中的所有单元格。因此公式中不会出现意外的不一致。H4
中),然后点击Tab
。 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以来就已经可用。
以下是一个示例的屏幕截图:
你应该能够看到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)