我如何预测下一个单元格的位置? (写出总计)

你知道当你从一个单元格复制Excel中的单元格到下一个单元格时,公式自动地将=Sum(A1+$B1)replace为=Sum(C1+$B1)

我想知道如何实现类似的东西,除了编程完成。

这就是我想要达到的效果,我有一个表格,一个地方的收入行和列的项目,这是预先摆动的数据,如果你想知道,我想完成它与盛大总计,这是最初的失踪。

 Place | Beans | Buns | Breads | etc Bobby's | 550 | 20 | 30 | 10 Sen's | 550 | 20 | 30 | 10 Solaire's | 550 | 20 | 30 | 10 

现在,我将在最后一行下面多写一行,在最后一行旁边多写一行,标题为[总计]。

所以,我猜测我将需要一个for循环来运行我要生成的最后一行。 像这样的东西:

 For (int i = 2; i < numberofColumns; i++) { string query = "=Sum(? : ?)" xlsWorksheet.Cells[ numberofRows + 1 , i].Formula = query; } 

正如你所看到的,我不知道如何处理隐式的单元格位置。 棘手的部分是,我想这个algorithm循环到最后,而不必隐式定义一个特定的单元格。 这是因为我可以有任何数量的额外的列,或任何数量的额外的行之间。 重要的是我需要创build总共行和列。

预期的结果是:

 Place | Beans | Buns | Breads | etc | GrandTotal Bobby's | 550 | 20 | 30 | 10 | 610 Sen's | 550 | 20 | 30 | 10 | 610 Solaire's | 550 | 20 | 30 | 10 | 610 | 1650 | 60 | 90 | 30 | 1830 

目前,这是在C#中针对Excel Interop的Excel文档完成的。 我明白,这也可以在VBA或Excel公式中完成,所以我打算将这两个标签标记到这个post。 该公式本身将不仅仅是简单地总结行,但我不知道如何预测下一个单元格的位置。

这里有一个选项,我敢肯定这不是最有效的:

 lCol = Sheets("SheetName").Cells(1, Sheets("SheetName").Columns.Count).End(xlToLeft).Column lRow = Sheets("SheetName").Range("A" & Rows.Count).End(xlUp).Row Sheets("SheetName").Cells(1, lCol + 1).Value = "Grand Total" For i = 2 To lRow Sheets("SheetName").Cells(i, lCol + 1).Formula = "=SUM(RC[-" & lCol - 1 & "]:RC[-1])" Next i lCol = Sheets("SheetName").Cells(1, Sheets("SheetName").Columns.Count).End(xlToLeft).Column For i = 2 To lCol Sheets("SheetName").Cells(lRow + 1, i).Formula = "=SUM(R[-" & lRow - 1 & "]C:R[-1]C)" Next i