Excel 会将以 开头的值自动转换=
为.formulas
. 要保存数组公式,您需要直接写入FormulaArray
范围的属性。
更多细节:
如果您使用的是普通公式,那么您在 VBA 中有两个选项。您可以像这样设置单元格的值或公式属性:
Range("A3").value = "=Sum(A1:A2)"
Range("A3").Formula= "=Sum(A1:A2)"
使用数组公式时,您不能使用这些方法中的任何一种,您需要将其存储到单元格的不同区域中:
Range("A3").FormulaArray = "=Sum(A1:A2)"
当用户按下Ctrl++Shift时,Enter他们告诉 excel 将.value
单元格发送到 . FormulaArray
单元格的部分。
否则默认情况下,当 excel 看到=
我分配的符号.value
时.formula
无论如何,这都是相对于 excel 对象模型的,即使它是在 VBA 中。
既然我已经进入了那个细节,我相信matlab的xlswrite
函数只写入单元格的值,而不能写入这个子属性,我可能错了。
这可能在 MATLAB 中有效(未经测试)
mlrange='A3'; % or similar
Excel = actxserver ('Excel.Application');
Excel.Workbooks.Open(filename);
TargetSheet = get(Excel.sheets,'item','A');
TargetSheet.Activate
ran = Excel.Activesheet.get('Range',mlrange);
ran.FormulaArray = '=Sum(A1:A2)'