在我看来,这个问题的答案太具体了。这里尝试使用两种不同的方法和一个完整的示例来获得更一般的答案。
OFFSET 方法
OFFSET 接受 3 个强制参数。第一个是我们想要偏移的给定单元格。接下来的两个是我们想要偏移的行数和列数(向下和向右)。 OFFNET 返回由此产生的单元格的内容。例如,OFFSET(A1, 1, 2) 返回单元格 C2 的内容,因为 A1 是单元格 (1,1),如果我们将 (1,2) 添加到其中,我们将得到 (2,3)对应于单元格C2。
要让它从另一列中每隔 n 行返回一次,我们可以使用ROW 函数。当这个函数没有参数时,它返回当前单元格的行号。因此,我们可以将OFFSET 和ROW 组合在一起,通过将乘数添加到ROW 返回的值来创建一个返回每个第n 个单元格的函数。例如OFFSET(A$1,ROW()*3,0)。请注意在目标单元格中使用$1。如果不使用,偏移量将从不同的单元格偏移,因此实际上将1 添加到乘数。
ADDRESS + INDIRECT 方法
ADDRESS 接受两个整数输入并将单元格的地址/名称作为字符串返回。例如,ADDRESS(1,1) 返回"$A$1"。 INDIRECT 获取单元格的地址并返回内容。例如,INDIRECT("A1") 返回单元格A1 的内容(它也接受带有$ 的输入)。如果我们在ADDRESS 中使用ROW 和一个乘数,我们可以得到每个第n 个单元格的地址。例如,第 1 行中的 ADDRESS(ROW(), 1) 将返回 "$A$1",第 2 行中将返回 "$A$2" 等等。所以,如果我们把它放在INDIRECT 中,我们可以得到每第 n 个单元格的内容。例如,INDIRECT(ADDRESS(1*ROW()*3,1)) 向下拖动时会返回第一列中每个第三个单元格的内容。
示例
考虑以下电子表格的屏幕截图。标题(第一行)包含以下行中使用的调用。
A 列包含我们的示例数据。在这种情况下,它只是正整数(计数在所示区域之外继续)。这些是我们希望每 3 次获得的值,即我们希望获得 1、4、7、10 等。
列B 包含使用OFFSET 方法的错误尝试,但我们忘记使用$。可以看出,当我们乘以 3 时,我们实际上每 4 行得到一次。
列C 包含使用OFFSET 方法的错误尝试,我们记得使用$,但忘记减去。因此,虽然我们确实获得了每 3 个值,但我们跳过了一些值(1 和 4)。
D 列包含使用 OFFSET 方法的正确函数。
E 列包含使用ADDRESS + INDRECT 方法的错误尝试,但我们忘记减去。因此,我们最初跳过了一些行。与列 C 相同的问题。
F 列包含使用 ADDRESS + INDRECT 方法的正确函数。