引用中间有空白单元格的行并返回中间没有空白单元格的另一行的结果

引用中间有空白单元格的行并返回中间没有空白单元格的另一行的结果

我有一行,其中单元格之间的间距均匀。我希望该行中的每 8 个单元格引用另一张表中的单元格,其中单元格之间没有空格。我在这一行中有很多数据,所以我不想做任何会减慢已经很大的文档速度的事情,也不想使用 VB 代码。

答案1

以下是如何实现这一目标的要点。

假设 Sheet1 上的源值位于第 3 行,从 C 列开始;因此 C3、D3、E3 等。显示单元格位于 Sheet 2 的第 5 行,从 B 列开始,然后每 8 个单元格显示一个,因此 B5、J5、R5 等。我特意使用了不同的行和起始列来进行说明。对于您的情况,这可能更简单。

因此,您希望 B5 显示 C3、J5 显示 D3、R5 显示 E3 等。有两种常用方法可以实现此目的:使用 OFFSET 或 INDIRECT。我将分别说明这两种方法。

列计算:对于这两种情况,您都需要计算列增量的数量(Sheet2 上的增量为 8,而 Sheet1 上的增量为 1)。计算公式如下:

(COLUMN()-COLUMN(B5))/8  or in this example:
(COLUMN()-2)/8

空的 COLUMN() 函数返回其所在单元格的列。对于 Sheet2 上的每个显示单元格,其列减去系列中的第一列,再除以 8,即可得出 Sheet1 上的列增量数。

为了抵消,您可以像这样使用它。sheet2 单元格中的公式将是:

=OFFSET(sheet1!C3,0,(COLUMN()-2)/8,1,1)

OFFSET 从锚点单元格(此例中为 C3)开始工作,然后偏移 0 行,偏移上述公式计算的列数,并返回 1 行 1 列大小的结果(单个单元格)。

间接将您构建的内容(从文本和计算)转换为地址。对于此功能,您需要添加锚点来定位实际单元格地址。INDIRECT 允许您使用另一种方便计算列的地址规范样式;它将列称为数字而不是字母。单元格 C3 将是 R3C3,即第 3 行、第 3 列。

添加锚点的列将使列计算如下所示:

(COLUMN()-COLUMN(B5))/8+COLUMN(sheet1!C3)  or in this example:
(COLUMN()-2)/8+3

通过连接文本和计算数字来构建单元格引用:

=INDIRECT("sheet1!R3C"&(COLUMN()-2)/8+3,false)

“false”表示单元格引用为“R1C1”样式。

在 Sheet2 的第一个显示单元中设置任一公式,并根据电子表格布局进行调整。然后将其复制到其他每个显示单元中。

相关内容