我可以在 Google 电子表格公式中定义本地值(或变量)吗?

问题描述 投票:0回答:3

有时我会想出很长的电子表格公式,例如这个使用 Unicode 字符创建“数据栏”的公式(地址相对于 G3):

= rept("█"; floor(10 * F3 / max(F$1:F$999)))
  & mid(" ▏▎▍▌▋▊▉█"; 
        1 + round(8 * (        10 * F3 / max(F$1:F$999)
                       - floor(10 * F3 / max(F$1:F$999)))); 
        1)

data bars

如果有某种

let()
来定义局部变量那就太好了:

= let('x', 10 * F3 / max(F$1:F$999), 
      rept("█"; floor(x))
      & mid(" ▏▎▍▌▋▊▉█"; 1 + round(8 * (x - floor(x))); 1))

这种事存在吗?

如果没有,是否有任何聪明的技巧可以在公式中实现相同的结果? (不使用其他电池)


编辑:这不是一个很好的例子,因为

sparkline()

 函数已经可以实现这种条形图(感谢 Harold!),但问题仍然存在:除了使用额外的电子表格单元格之外,如何清理复杂的公式并避免重复?

google-sheets formula local-variables
3个回答
2
投票
我知道OP已经解决了他们的问题,但如果其他人在搜索时发现这个问题,请回答标题中的问题:

是的,就像在其他电子表格程序中一样,您可以为 Google 表格命名变量。为此,在“名称框”(电子表格上方,“fx”左侧)中,您通常会输入单元格或单元格区域的地址。

如果单击该框(或按 Ctrl+J),然后在此框中键入与单元格地址不匹配的名称,它将命名该值的突出显示单元格(或范围)并将其存储在工作表中。您还可以使用菜单中的数据/命名范围来管理这些命名变量。

enter image description here

这将弹出一个侧边栏,您可以在其中按“+ 添加范围”来添加命名范围/变量。

enter image description here

然后,您可以输入您想要命名的范围/变量,并选择您想要它引用的范围,然后按完成。

enter image description here

话虽如此,这并不能解决 OP 问题 - OP 希望在公式中本地化变量。这也是您可以在 Google Sheets 中执行的操作(我上次检查过,您不能在 Excel 中执行此操作)。在 Google 表格中,您现在可以通过转到数据/命名函数来使用命名函数。

enter image description here

这将弹出“命名函数”侧边栏 - 您可以选择底部的“添加新函数”。

enter image description here

然后会弹出“新命名函数”侧边栏。

enter image description here

在这里,您可以输入函数的名称、您想要成为函数“本地”的任何变量(作为“参数占位符”),然后输入实际的公式。

这就是它寻找 OP 所需功能的方式:

enter image description here

(注意:作为美国用户,我必须使用逗号而不是分号。OP 必须来自使用分号作为分隔符的国家。请使用适合您所在地区的分隔符)

现在要使用该函数,您只需像在需要的单元格中调用任何其他电子表格函数一样调用它即可。对于 OP 问题,在相应的单元格中它看起来像这样:

=DATABAR( 10 * F3 / max(F$1:F$999) )
最后,

SPARKLINE

完成了OP想要做的工作,但如果有人正在寻找更通用的应用程序,我希望这个答案可以帮助他们。


0
投票
电子表格公式

SPARKLINE可以为您提供解决方案吗?

=SPARKLINE(10,{"charttype","bar";"max",20})
    

0
投票
几年后,在 2020 年左右,

Microsoft Excel 然后 Google Spreadsheet 引入了 LET 公式函数,其工作原理与 OP 描述的完全一样,并且记录在here

Syntax

LET(name1, value_expression1, [name2, …], [value_expression2, …], formula_expression )
Sample 1

LET(avg, AVERAGE(B2:D2), IF(avg>=4, "Great", IF(avg>=3, "Good", "Poor")))
Sample 2

LET(criteria, "Fred", range, FILTER(A2:D8, A2:A8=criteria), ARRAYFORMULA(IF(ISBLANK(range), "-", range)))
    
© www.soinside.com 2019 - 2024. All rights reserved.