excel - 权威 Excel 范围语法引用

标签 excel

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

最佳答案

这似乎是一个有趣的练习。我将尽可能多地列出,希望其他人可以指出我忘记/错过/不知道的那些。

您所要求的内容的某种指南,以及寻找其他文档的任何人的来源: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 中有 =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 列或
[1] - 我们距离当前单元格 1 列

换句话说,如果您没有括号,则您是在引用有问题的单元格或列。如果您确实有括号,则您有一个相对引用。

细胞引用:
R3C7是绝对引用 - 第 3 行第 7 列。这与说 $G$3 相同A1 样式,如上详述。
R[3]C7部分是绝对引用,部分是相对引用。这是要求“给我从当前单元格向下 3 行的单元格,在第 7 列”(即 G 列)如果我在单元格 A1 中有这个,我将引用单元格 G4。如果我将它移动到单元格 B2,我将引用单元格 G5。
R[2]C[-2]是一个完整的相对引用。您还可以引用较早的列或行,如 - 所示。标志。如果我在单元格 C1 中有这个公式,它将引用单元格 A3。如果我将公式移至 D2,我现在将引用单元格 B4。

范围引用:

表引用

表格使引用其他单元格和范围变得简单直观。它们分解如下:

表名[列名]

公式引用

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  

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

关于excel - 权威 Excel 范围语法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2977919/

相关文章:

vba - 如何在VBA中添加命令按钮?

vba - 图表事件 - 代码未拾取 1 个以上数据系列的值

Excel如何显示范围内重复次数最多的名称?

excel - 替换部分文件名(时间戳)

excel - Google电子表格相对行编号+跳过空单元格

excel - 公式自动填充操作

excel - 从晨星提取特定的表格单元格,然后循环到下一个晨星页面

Excel - 删除行时删除图像

vba - Multipage内Textbox的访问地址

java - jExcel 获取单元格内容丢失