excel - 从 Matlab 修改 Excel 工作表

标签 excel matlab worksheet-function

是否可以从 matlab 在 excel 中打开工作表并编辑公式?这个想法是通过创建第二张表来自动化不确定性分析,其中每个单元格中的不确定性来自前一个单元格的值。本质上,我想将单元格视为变量并对每个单元格执行 SQRT(SUM(Partials(xi)^2)) 。 matlab calc 应该没有问题,但是可以在sheet中编辑公式吗?

目前的流程是从excel复制粘贴到matlab。这是一个小函数,它在 matlab 中针对方程组计算不确定性:

function [f_u_total f_u] = uncertAnalysis(f, vars, vars_u)
    f_u = [];
    f_u_total = [];
    for(i=1:length(f))
        f(i)
        item = uncertAnalysisi(f(i), vars, vars_u);
        f_u = [f_u; item(1)];
        f_u_total = [f_u_total; item(1)];
    end
end


function [f_u_total f_u] = uncertAnalysisi(f, vars, vars_u)
    f_u = [];
    % take the partials and square them
    for i=1:length(vars)
        f_u = [f_u; vars(i) (diff(f, vars(i)).*vars_u(i)).^2];
    end
    % calculate the RSS
    f_u_total = (sum(f_u(:,2))).^.5;
end

顺便说一句,方程式看起来像这样(为什么我不手动这样做):

=(9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^4/C!Y3^6/(C!U3^C!Z3)^6*F3^2+1/4*C!S3^2/C!V3^4*C!W3/(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*O3^2+1/4*C!S3^2/C!V3^4*C!W3/(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*P3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^4*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*Q3^2+1/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*S3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*C!Z3^2/C!U3^2*U3^2+4*C!S3^2/C!V3^6*C!W3*(C!O
3-C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*V3^2+1/4*C!S3^2/C!V3^4/C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*W3^2+1/4*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3^3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*X3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^8/(C!U3^C!Z3)^6*Y3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*LOG(C!U3)^2*Z3^2)^(1/2)

最佳答案

您应该能够通过 COM/ActiveX/Automation 来完成。看External Interfaces文档;有一个关于如何通过 Excel 的自动化接口(interface)访问 Excel 文档的示例。

我几乎没有以这种方式操作 Excel 的经验,但我知道您可以通过自动化在 Excel 中做任何事情,并且编辑单元格公式听起来并不难。

编辑:我找不到对 Excel 对象模型的引用,但这是另一个示例:http://support.microsoft.com/kb/301982

关于excel - 从 Matlab 修改 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/579006/

相关文章:

vb.net - 将 Excel 文件附加到完成的 Visual Basic 项目

excel - PowerQuery - 文件夹查询导入新文件

c++ - 是否可以从 QtCreator 调用 Matlab?

excel - Range().Cells().Row

vba - 尝试在设定的时间段内获取日历天数/工作日/周数

c++ - 如何从 Qt 应用程序驱动 excel 窗口

matlab - 在MATLAB中直接将大数组写入磁盘时,是否需要预先分配?

java - 如何在java中像MATLAB imread()一样读取图像?

excel - DCOUNT 函数没有返回正确的结果

excel - 如果单元格值存在于另一列中,则保留行