【发布时间】:2016-08-09 23:52:58
【问题描述】:
在 Excel 中,我有一个列如下,作为工作簿模板的一部分:
Date Asset Return
1/3/2005 0.003582399
1/4/2005 -0.01908258
1/5/2005 0.002080625
1/6/2005 0.005699497
1/7/2005 -0.008040505
1/10/2005 -0.00339116
1/11/2005 -0.009715187
1/12/2005 0.002371855
1/13/2005 -0.00580783
1/14/2005 0.001058481
1/18/2005 0.015483842
1/19/2005 -0.014690715
1/20/2005 -0.015714799
1/21/2005 -0.010796326
我使用 Excel 作为用户界面。用户将数据放入 Excel 中,然后从另一个程序(Matlab)中读取数据,该程序将进行计算。
为此,我使用 VBA 命令将其发送到 Matlab 并直接或通过命名范围来引用范围:
MLPutMatrix "VARIABLE_NAME", Range("B8:B2954")
或
MLPutMatrix "VARIABLE_NAME", Range("NamedRange")
我的问题是我事先不知道范围的大小是多少,因为行数会根据用户放入 Excel 范围的数据而有所不同。
我尝试使用以下公式创建一个引用最后一个非空白行的命名范围:
Sheet1!$B$8:INDEX(Sheet1!$B:$B,COUNTA(Sheet1!$B:$B)+8)
但是,显然用公式定义的命名范围不会显示在名称框中,也不能在 VBA 脚本中使用,因此这不起作用。我需要手动为其创建一个名称以显示在名称框中并使用 VBA 访问它,但是如果我事先不知道我的范围尺寸,我当然不能这样做。
所以我的问题是:我需要找到某种方法能够通过名称或大小来引用动态范围,然后能够在 VBA 中引用它,以便我可以使用将其发送到 Matlab “MLPutMatrix”命令。
【问题讨论】:
-
嗨,您在 excel 中使用表格有什么问题吗?这会自动为您提供一个命名的动态范围。请看这个视频:youtube.com/watch?v=uLJEMnIT0zM 它解释了如何使用动态范围名称。希望有帮助!