权威的Excel范围语法参考

时间:2010-06-04 21:28:59

标签: excel

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

4 个答案:

答案 0 :(得分: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参考文献如下:

Alphanumberic部分 - 我们在哪一栏 数字部分 - 我们在哪一行 $ - 紧跟在

之后锁定部分

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结合使用(&# 34;这个出现的实例是什么?")例如,如果你在C1中有= Sum($ 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行或 [1] - 我们从当前的单元格向下排了1行 C - 列 1 - 第1列OR [1] - 我们从当前单元格中删除了一列

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

细胞参考:

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

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

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

范围参考:

表格参考

表格使参考其他单元格和范围变得简单直观。它们如下所示:

表名[的ColumnName]

公式参考

VBA参考

VBA从信件到列的转换

出现几次的事情是将列号更改为列字母。我发现这个非常有用的代码片段(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  

*********正在建设中**********

答案 1 :(得分: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格式的单元格引用的正则表达式

答案 2 :(得分:0)

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

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

在某处可以使用Excel公式的BNF描述,但我没有引用该引用。

答案 3 :(得分:0)

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

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