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时:
使用"Alex P"中的示例:
注意:以这种方式使用命名列,您不能访问公式所在的任何其他行!至少我不知道表达类似(行+ 1)的可能性......
我建议创建一个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 添加另一行,并确保将您的公式“复制”到新行中。Count
而不是G
例如)。我真的可以推荐视频You Suck at Excel with Joel Spolsky它解释了所有这些。
我还没有完全审查之前的答案,但我认为这更接近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
假设我在第 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)