gpt4 book ai didi

excel - 以编程方式计算 Excel 数组公式时遇到问题

转载 作者:行者123 更新时间:2023-12-02 10:34:23 25 4
gpt4 key购买 nike

我正在使用 MATLAB 程序在 Excel 工作表中写入值。我还使用公式在单元格中写入值(例如,MATLAB 程序将 =AVERAGE(A1:A10) 写入单元格,并将其转换为适当的值(即,当我打开工作表时,我不看不到上面的公式文本,而是值)。

但是,我在编写数组公式(带有大括号的公式)时遇到了麻烦。通常,用户通过按 Ctrl+Shift+Enter 组合键输入它们,出现大括号并计算适当的值。但是,当我从 MATLAB 程序编写这些用大括号括起来的公式时,不会计算值,我只是看到公式文本(用大括号括起来)。
看来我无法通过简单地将数组公式写入单元格来模拟 Ctrl+Shift+Enter 效果。

有什么解决办法吗?

最佳答案

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)'

关于excel - 以编程方式计算 Excel 数组公式时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12536822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com