Excel公式中的单元格引用有A1和R1C1两种格式,同时也有绝对引用和相对引用两种方式。SpreadJS完全支持Excel的引用方式。下面让我们了解下SpreadJS公式中的单元格引用。
1. A1引用样式
每一个单元格可以通过一个列字母加一个行数字的形式引用。列字母从A到Z然后从AA到ZZ,AAA到ZZZ……。行数字则从1到2,147,483,648。比如D50表示D列第50行。
A1引用样式是最常用最熟悉的引用方式,也是SpreadJS默认的引用样式。
2. R1C1引用样式
每一个单元格直接通过在行书和列数前加上R和C引用。例如R2C3表示第二行第三列的那个单元格。
R1C1并不常用,但是通过在代码中设置公式非常方便,我们无需将已知单元格的行列转换成A1引用样式,直接通过字符拼接的方式便可生成公式,例如 formula = ‘R’+row+ ‘C’+col;
SpreadJS使用referenceStyle方法设置引用样式。
spread.referenceStyle(GcSpread.Sheets.ReferenceStyle.R1C1);
//spread.referenceStyle(GcSpread.Sheets.ReferenceStyle.A1);
3. 绝对引用和相对引用
单元格相对引用是指单元格公式引用的单元格是相对于自己的位置。例如,当从单元格 C2 引用单元格 A2,实际上引用的单元格是两个列的左侧 (减去 A 的 C) 和 (2) 的同一行中。默认情况下,单元格引用是相对的。
单元格绝对引用是指单元格公式中引用的单元格是sheet中的绝对位置,与自己的位置无关。
在A1样式引用中,A1为相对引用,如使用绝对引用只需加上美元符号$,绝对引用A1单元格的公式为=$A$1。
在 R1C1样式引用中,R1C1为绝对引用,相对引用时需要添加相对位置,比如R[-1]C[-1]表示相对自己行列各减1即左上角的单元格。
在使用中相对引用和绝对引用有什么区别呢?
a) 粘贴复制时,相对引用复制的是相对关系,绝对引用指向同一个单元格。
例如我们设置C3单元格引用A1
当我们将C3复制粘贴到C4时会发现C4指向了A2。
同样如果我们设置D3绝对引用A1
然后复制D3到D4,会发现D4仍然引用的是A1,这就是绝对引用。
b) 拖拽填充
当我们分别对相对引用单元格和绝对引用单元格拖拽填充,绝对引用始终指向同一个单元格,而相对引用还是指向相对位置。
4. 混合引用
混合饮用即同时使用相对引用和绝对引用,比如$A1,R[1]C1。