很抱歉,如果之前有人询问,但我找不到它。我正在寻找可用作参考的所有有效字符串的权威描述,例如“A1:C5”,“$ A:$ A”,$ A2“等等。这似乎是一个非常基本的东西,但我浪费了几个小时试图找到它。我所能找到的只是一堆“有用”的例子,但没有参考。
答案 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插入行/列(而不是使用其他应用程序入侵工作簿),任何引用都将自动更新为新地址。