Excel公式中是否存在变量这样的东西?

时间:2009-04-21 10:30:47

标签: excel

我讨厌重复功能,特别是在Excel公式中。有什么方法可以避免像:

=IF( VLOOKUP(A1, B:B, 1, 0) > 10, VLOOKUP(A1, B:B, 1, 0) - 10, VLOOKUP(A1, B:B, 1, 0) )

[以上只是问题的一个简单示例,而不是我正在使用的特定公式。]

9 个答案:

答案 0 :(得分:33)

您可以为公式的VLOOKUP部分定义名称。

  1. 突出显示包含此公式的单元格
  2. 在“插入”菜单上,转到“名称”,然后单击“定义”
  3. 输入变量的名称(例如“值”)
  4. 在“引用到”框中,输入您的VLOOKUP公式:=VLOOKUP(A1,B:B, 1, 0)
  5. 单击“添加”,然后关闭对话框
  6. 在原始公式中,使用您刚定义的名称替换VLOOKUP部分:=IF( Value > 10, Value - 10, Value )
  7. 步骤(1)在这里很重要:我想在第二行,你希望Excel使用VLOOKUP(A2,B:B, 1, 0),第三行VLOOKUP(A3,B:B, 1, 0)等。步骤(4)通过使用相对引用来实现这一点(A1B:B),而不是绝对引用($A$1$B:$B)。

      

    注意:

         
        
    1. 对于带有功能区的较新Excel版本,请转到公式功能区 - >定义名称。之后也一样。此外,要使用您的名字,您可以在编辑公式时在“定义名称”下“执行公式”,或者开始键入公式,Excel将建议名称(信用:Michael Rusch)

    2.   
    3. 缩短步骤:1。右键单击一个单元格,然后单击“定义名称...”。2。输入要与该名称/本地变量关联的名称和公式3。使用变量(信用:Jens Bodal)

    4.   

答案 1 :(得分:4)

您可以将中间值存储在单元格或列中(如果选择,可以隐藏)

C1: = VLOOKUP(A1, B:B, 1, 0)
D1: = IF(C1 > 10, C1 - 10, C1)

答案 2 :(得分:4)

现在您可以使用函数 LET 在 Excel 公式中声明变量。 此功能自 2020 年 6 月起面向 Microsoft 365 用户提供。

以您的示例为例,公式为:

=LET(MyFunc,VLOOKUP(A1,B:B,1,0), IF(MyFunc > 10, MyFunc - 10, MyFunc ) )

第一个参数是变量名,第二个参数是函数或范围。您可以添加更多对参数变量、函数/范围。

添加变量后,最后一个参数将是您感兴趣的公式——调用您刚刚创建的变量。

有关详细信息,请访问 Microsoft 网页 here

答案 3 :(得分:3)

与变量无关,您的示例也将由MOD解决:

=Mod(VLOOKUP(A1, B:B, 1, 0);10)

答案 4 :(得分:1)

两个选项:

  • VLOOKUP在自己的单元格中运行:=VLOOKUP(A1, B:B, 1, 0)(比方说,C1),然后公式引用C1:=IF( C1 > 10, C1 - 10, C1 )
  • 创建一个UDF:

Function MyFunc(a1, a2, a3, a4)
    Dim v as Variant
    v = Application.WorksheetFunction.VLookup(a1, a2, a3, a4)
    If v > 10 Then
        MyFunc = v - 10
    Else
        MyFunc = v
    End If
End Function

答案 5 :(得分:1)

定义包含查找的NAME是一个简洁的解决方案,但是,似乎总是将工作表名称与单元格引用一起存储。但是,我认为如果您删除“引号”中的工作表名称但保留“!”,则可能会有效。

答案 6 :(得分:0)

无法在Excel的公式栏中定义变量。作为一种解决方法,您可以将该函数放在另一个单元格中(可选地,隐藏内容或将其放在单独的工作表中)。否则,您可以创建VBA function

答案 7 :(得分:0)

是。但不是直接的。

更简单的方式

  • 您可以在一个单元格中发布Vlookup()并在需要的地方使用其地址。 - 这可能是在Excel中使用变量的唯一直接方式。

OR

  • 您可以在VBE宏中定义Vlookup(引用)-10作为包装函数。按Alt + f12并使用该功能

答案 8 :(得分:0)

我知道这有点偏离主题,但是跟随JonasBøhmer提出的解决方案,实际上我认为MOD是您示例的最佳解决方案。

如果您打算将结果限制为一位数,那么MOD是实现它的最佳方法。

即。假设VLOOKUP(A1,B:B,1,0)返回23.您的IF公式只会​​进行此计算:23 - 10并返回13作为结果。

另一方面,MOD(VLOOKUP(A1,B:B,1,0),10)将23除以10并显示余数:3。

回到主题,当我需要使用重复某些部分的公式时,我通常将它放在另一个单元格上然后像某些人已经建议的那样隐藏它。