权威的Excel范围语法参考

问题描述 投票:11回答:4

对不起,如果之前有人询问,但我找不到它。我正在寻找可用作参考的所有有效字符串的权威描述,例如“A1:C5”,“$ A:$ A”,$ A2“等等。这似乎是一个非常基本的东西,但我浪费了几个小时试图找到它。我所能找到的只是一堆“有用”的例子,但没有参考。

excel
4个回答
3
投票

这看起来很有趣。我将尽可能多地列出,并希望其他人可以指出我忘记/错过/不知道的那些。

您需要的一种指南,以及寻找其他文档的人的来源:http://www.excelfunctions.net/Excel-Reference-Styles.html

我将从5大类开始 - A1,R1C1,表,公式和VBA参考。我将忽略其他可以与Excel交互的程序(尽管如果正式添加,我可能会添加Python)

所有示例都将使用A1参考样式,因为它们对于没有经验的用户来说更直观。

A1参考类型:

A1样式告诉我们给定单元格的坐标。字母数字部分告诉我们我们在哪一列,而数字部分告诉我们我们在哪一行。

细胞参考:

A1 - 基本单元格引用。引用单元格A1,当您通过列和行拖动公式时,它将更改。例如,如果您的公式在C1中,并且您将其移动到D2,它现在将引用B2。

好用:比较两张纸。 ='Sheet1'!A1='Sheet2'!A1将比较表1和表2中的数据,如果匹配与否则给出真/假。公式可以轻松地向侧面滑动,向上/向下滑动以进行额外的比较。

$A1 - 这会锁定列。拖动公式时,行将更改,但列不会更改。如果您始终要在公式中引用同一列,则非常有用。例如,如果您的公式在C1中,并且您将其移动到D2,它现在将引用$ A2。

有用的示例:辅助列中的公式。 A1 = $C1*2将整齐地向下滑动而没有任何问题,如果你把它移到B列,它将继续引用C.

A$1 - 这会锁定行。拖动公式时,列将更改,但行不会更改。如果您总是希望引用公式中的同一行,则非常有用。例如,如果您的公式在C1中,并且您将其移动到D2,它现在将引用B $ 1。

$A$1 - 这会锁定单元格引用。无论你如何拖动公式,它都将继续引用单元格A1。例如,如果您的公式在C1中,并且您将其移动到D2,它现在将引用$ A $ 1。

有用示例:所有数字的常数乘数。

范围参考:

由于范围参考的组合数量庞大,我坚持最常见的。将细胞参考类型与范围参考类型混合和匹配将得到每种组合。

A1参考文献如下:

字母数字部分 - 我们在数字部分中的哪一列 - 我们在$中的哪一行 - 紧跟以下部分锁定部分

A1:B2 - 引用单元格网格,其中A1位于左上角,B2位于右下角。移动时,公式的两个部分都会滑动。通常建议不要在多个单元格中应用公式中的未锁定引用,因为参考范围也将移动。例如,如果在C1中有= Sum(A1:B2),并将其移动到D2,则它将转换为= Sum(B2:C3)。

解锁范围引用通常会导致vlookup公式出现问题,其中参考范围最终随着人们向下滑动公式而变化。

$A$1:$B$2 - 引用单元格网格,其中A1位于左上角,B2位于右下角。即使移动,此范围参考也不会改变。例如,如果您在C1中有= Sum($ A $ 1:$ B $ 2),并且您将其移至D2,则它将转换为= Sum($ A $ 1:$ B $ 2)

$A$1:A2 - 这将锁定第一个单元格,但使引用的第二部分保持灵活。当你想看到“到目前为止发生的一切”时,这非常有用 - 例如,如果你为列表编号,当与=countifs结合使用时(“这是什么实例?”)例如,如果你有=在C1中求和($ A $ 1:A2),然后将其移至D2,它将转换为= Sum($ A $ 1:B3)

类似的效果可以与$A$1:B1水平使用。

A:A - 这给出了整个A栏。由于这是解锁的,它会滑动。用于抓取给定列中的所有内容。例如,如果在C1中有= Sum(A:A),并将其移动到D2,则它将转换为= Sum(B:B)

$A:A - 这将给出整个A列。当您进行搜索更多列时,这将扩展。我想不出它的直接实际用途。例如,如果在C1中有= Sum($ A:A),并且将其移动到D2,则它将转换为= Sum($ A:B)

$A:$A - 这将给出整个列A.即使您移动公式,它也会锁定到A列。例如,如果您在C1中有= Sum($ A:$ A),并且将其移至D2,则它将保持为= Sum($ A:$ A)

稍微鲜为人知的是行:

1:1 - 整个第一排。解锁。例如,如果在C2中有= Sum(1:1),并将其移到D3,它将转换为= Sum(2:2)

$1:1 - 整个第一排。部分锁定。例如,如果你在C2中有= Sum($ 1:1),并且你将它移到D3,它将转换为= Sum($ 1:2)

$1:$1 - 整个第一排。完全锁定。例如,如果您在C2中有= Sum($ 1:$ 1),并且将其移至D3,则它将保持为= Sum($ 1:$ 1)

R1C1参考文献

R1C1更像是参考样式而不是坐标样式。这非常有用,因为您所有单元格中的公式看起来完全相同,并且使得在VBA中输入滑动公式变得更加容易。

R1C2如此分解:

R - 行1 - 行1 OR [1] - 我们从当前单元格C向下排1行 - 第1列 - 第1列OR [1] - 我们从当前单元格开始是1列

换句话说,如果您没有括号,则表示您正在引用相关的单元格或列。如果你有括号,你有一个相对的参考。

细胞参考:

R3C7是绝对参考 - 第3行,第7列。这与A1风格的$G$3相同,如上所述。

R[3]C7是部分绝对的,部分相对的参考。这就是要求“在第7列中向当前单元格下行3行”(即G列)如果我在单元格A1中有这个,我将引用单元格G4。如果我将它移动到单元格B2,我将引用单元格G5。

R[2]C[-2]是一个完整的相对参考。您还可以引用较早的列或行,如-符号所示。如果我在单元格C1中有这个公式,它将引用单元格A3。如果我将公式移动到D2,我现在将引用单元格B4。

范围参考:

表格参考

表格可以轻松直观地引用其他单元格和范围。它们分解如下:

表名[的ColumnName]

公式参考

VBA参考

VBA从Letter到Column的转换

出现几次的事情是将列数改为列字母。我发现这个非常有用的代码片段(Stack Overflow上的某个地方,我目前没有方便的链接)将列号转换为列字母,以便在VBA中使用。

Function Col_Letter(lngCol As Long) As String
  'Converts a number (usually generated from an application.match function) to a letter. For example 1 turns into A, 5 turns into E, etc.
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function  

********* 正在施工🚧**********


0
投票

我不知道是否有格式列表,因为实际上只有2:A1格式和R1C1格式。当您使用A1:C3时,实际上并没有指定范围格式,因为:实际上是范围运算符。

$ A $ 1,$ A1,A $ 1的变体就是那些 - 变体,标识在复制引用时,$之前的坐标不应该改变,但是否则坐标可能相对于副本而改变。

R1C1更复杂,因为它允许相对性。 R3C2是对第3行第2列(A1表示法中的B3)的绝对引用,而在R1C1引用中使用大括号[]表示它与来自单元格R3C2的当前单元格R [-2] C [1]相关会给R1C3(C1)。

差点忘了。在另一个工作表中也可以引用单元格。 'Sheet2的'!IV256

我用

(((\w*)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d+) 

作为标识A1格式的单元格引用的正则表达式


0
投票

问题是有各种运算符(范围,相交,隐式交叉等),函数(INDEX,OFFSET,CHOOSE,INDIRECT +用户定义函数),定义名称和结构化表引用等都可以被取消引用提供有效的范围参考。所以要做一个完整的工作意味着解析任意Excel公式。它也因Excel版本而异。

如果你想要做的只是使用标准的显式范围引用,通常的技巧是将字符串转换为R1C1表示法并使用它。在Excel文档中可以很好地描述R1C1引用的语法。

还有一个可用于某处的Excel公式的BNF描述,但我放错了引用。


0
投票

“它用于识别在工作表中插入新行或列时可能需要修改的单元格引用”

如果使用Excel live插入行/列(而不是使用其他应用程序入侵工作簿),则任何引用都将自动更新为新地址。

© www.soinside.com 2019 - 2024. All rights reserved.