-1

我正在创建一个相关值网格,例如距离网格。我有一系列单元格,每个单元格都包含一个公式,如果您知道与第一个单元格的偏移量,则其范围很容易描述,而且我无法弄清楚如何指定它。

  • 在左上角单元格 (R10) 中,公式是CORREL(C2:C21,C2:C21)- 当然是 1。
  • 在 (S10) 上方的下一列中,公式为CORREL(D2:D21,C2:C21)
  • 在下一行 (R11) 中,公式为CORREL(C2:C21,D2:D21)
  • 当然,S11 将包含CORREL(D2:D21,D2:D21),这也是 1。依此类推,对于大约 15x15 的网格。

这是所涉及范围的图形表示:

C2:C21,C2:C21  C2:C21,D2:D21  C2:C21,E2:E21
D2:D21,C2:C21  D2:D21,D2:D21  D2:D21,E2:E21
E2:E21,C2:C21  E2:E21,D2:D21  E2:E21,E2:E21

每当我添加一个新的数据行时,我都必须手动更新几个公式。因此,我希望动态确定最后一个非空白列号(在本例中为 21),例如使用COUNTA(C:C). 理想情况下,我也想要计算行偏移量的公式,这样我就可以在整个范围内拖动一个公式。

实现这一目标的最佳方法是什么?我认为 OFFSET 可能是解决方案中的一个组件,但我还没有成功地让它们一起工作。

4

2 回答 2

1

对 corr 矩阵的每个元素使用这个简单的设置也有帮助:

=CORREL(INDIRECT("'风险因素'!"&"T"&G6&":T"&H6);INDIRECT("'风险因素'!"&"U"&G6&":U"&H6))

使用此功能,我会参考另一张表中的数据,即风险因素,以将行 T 和 U 相互关联。我希望数据的范围是动态的,因此我在当前工作表中使用 G6 和 H6 来指代我当然在这些 G6 和 H6 单元格中指定的列的长度(行数)。

希望这可以帮助!

于 2015-06-01T08:14:44.380 回答
0

我发现这个公式虽然罗嗦,但达到了预期的效果。在此示例中,数据位于 C2:O19 中。我要构建的表计算了列对的所有排列的相关值。由于有 11 列,因此相关对表为 11x11,并从 R10 开始。每个单元格都有以下公式:

=CORREL(INDIRECT(ADDRESS(2,2+(ROWS($R$10:R10)),4)&":"&ADDRESS(COUNTA($C:$C),
2+(ROWS($R$10:R10)),4)),INDIRECT(ADDRESS(2,2+(COLUMNS($R$10:R10)),4)&":"&
ADDRESS(COUNTA($C:$C),2+(COLUMNS($R$10:R10)),4)))

正如我发现的那样,INDIRECT()解析单元格引用并获得它的值。

让我们以一个单元格为例,比如 U12,并详细查看范围公式。第一个INDIRECT是通过应用 R10 的行偏移量给出的列。

由于第 12 行是第 10 行向下的 2 行,ADDRESS(2,2+(ROWS($R$10:U12)),4)&":"&ADDRESS(COUNTA($C:$C),2+(ROWS($R$10:U12)),4)因此应该产生位于 C 行右侧 2 行的列,即 E。公式计算结果为E2:E19

第二个INDIRECT是通过应用 R10 的列偏移量给出的列。类似地,由于 U 列在 R 列右侧 3 列,ADDRESS(2,2+(COLUMNS($R$10:U12)),4)&":"&ADDRESS(COUNTA($C:$C),2+(COLUMNS($R$10:U12)),4)因此应该产生在 C 行右侧 3 行的列,即 F。第二个公式的计算结果为F2:F19

将这些范围参考值代入其中,单元格公式会缩小到=CORREL(INDIRECT("E2:E19"),INDIRECT("F2:F19"))并进一步缩小到=CORREL(E2:E19,F2:F19),这是我迄今为止一直在使用的。

就像距离表一样,这张表沿对角线对称,因为=CORREL(E2:E19,F2:F19)等于=CORREL(F2:F19,E2:E19)。对角线上的每个值都是 1,因为CORREL根据定义,相同的范围是 100% 相关的。

于 2014-05-15T03:45:50.470 回答