在Excel工作表中自动增加行号

时间:2012-09-19 16:30:34

标签: excel excel-vba ms-office excel-formula vba

我在单元格B5中编写了以下公式

=SUMPRODUCT(--(COLORINDEXOFRANGE(Data!D10:HO10,FALSE,1)=COLORINDEXOFONECELL(Data!$F$3,FALSE,1)))

当我从B5向下拖动到下一行时,公式中的单元格变为COLORINDEXOFRANGE(Data!D11:HO11,FALSE,1)

但我希望列号保持不变,只需要将行号更改为,例如单元格C5为COLORINDEXOFRANGE(Data!E10:HO10,FALSE,1),单元格D5为COLORINDEXOFRANGE(Data!F10:HO10,FALSE,1),依此类推。

COLORINDEXOFRANGE是我在互联网上找到的内置功能。

请帮忙。感谢

4 个答案:

答案 0 :(得分:3)

如果范围的结尾保持不变,那么您可以使用INDEX更改范围的开头,即用

替换Data!D10:HO10

=INDEX(Data!D$10:HO$10,ROWS(B$5:B5)):Data!HO$10

此类型的INDEX公式只是半挥发性的(它们在打开工作表时重新计算),这可能比完全不稳定的OFFSETINDIRECT函数更好。 ROWS函数也优于ROW,因为它将处理在公式上方插入(或删除)的行而不更改结果

答案 1 :(得分:1)

要从水平参考更改为垂直参考,我使用OFFSET,我使用=OFFSET('Forecast'!$I$17,COLUMN()-3,0)引用另一个工作表中的值,以便参考的列()成为行参考

答案 2 :(得分:0)

有几种方法可以解决这个问题,即将丢弃的公式拖到固定的引用单元格中:

  1. 要回答您的问题,您可以使用ROW()引用当前行号,因此ROW() - 1会显示上一行号。
  2. 但是这不适用于你的情况因为你引用了一个范围。另一个函数是INDIRECT(),看看文档,但这可以用作INDIRECT(“R5C”& COLUMN(),FALSE)
  3. 因为选项#2往往会使公式变得很长而且(几乎)不可读,有时你可以使用named range

答案 3 :(得分:0)

我遇到了类似的问题:拖动一个值,没有按预期增加。问题是我有过滤器应用于数据。删除过滤器可恢复功能。