举个例子,我需要在:
A2计算B2到D2的合计。
A3计算B3到D3的合计。
......
虽然可以在A1里写=SUM(B1:D1)然后往下拉,由EXCEL自动生成每一行的公式。
但是这样的作法在使用NPOI编程的时候无法实现。
在用NPOI复制ROW到下一行的时候,公式依然保留了=SUM(B1:D1),导致计算的结果并不正确。
为了迁就这一点,需要在EXCEL里写公式的时候就写成万能格式。
有如下两种方法:
1、=SUM(INDIRECT(ADDRESS(ROW(),COLUMN()+1)&":"&ADDRESS(ROW(),COLUMN()+3)))
含义:
ADDRESS(ROW(),COLUMN()+1) 取同一行的,在右边一格的单元格
ADDRESS(ROW(),COLUMN()+3) 取同一行的,在右边三格的单元格
INDIRECT()取得这个地址的引用,然后SUM合计。
2、=SUM(OFFSET($A$1,ROW()-1,1,1,3))
含义:
取得偏移的坐标范围,从A1开始,往下移动ROW()-1行,往右移动1列,高度1,宽度3。
虽然这样暂时能够解决了,但对于写公式来说非常不方便。还是希望NPOI的复制单元格功能也能够实现自动变化公式里的坐标。