Range 简介
在 Origin 8 之前的版本中,worksheet 上的 column 用 Data1_A,%(Data1, 1) 等格式表示,而从 Origin 8 开始 workbook 支持 multi-worksheet,因此需要一种新的办法来引用各个 sheets,columns 或者 cells,从而产生了 Range 的概念。Range 的格式为:[WinName]LayerName!DataRange
Origin 常用的 windows 有 workbook,matrix 和 graph,因此 range 具体到各个不同的 windows 时则写成:
SheetName!CellRange// workbook range
MatrixSheet!MatrixObject// matrix range
LayerName!DataPlot// plots
这样的格式跟 Excel 有点类似,但需要注意的是 Origin 的 Range 没有 Excel 那么自由(原因很多,比如兼容问题等)。直接使用 Range 只能在作为 X-Functions (另外一个新引入的东东)的参数才合法,否则则需要定义一个 Range Variable。下面将分别介绍。
一、Renge Variable
在 Command Window 中(Window : Command Window)定义一个 Range Variable:Range 关键字 + 变量名 = 具体的 Range
比如:range cc = Sheet2!Col(3); // Column 3 on Book1, Sheet2
range ll = Layer1!2; // Second curve on Graph1, layer1
range mm = MSheet1!Mat(2); // Second matrix object on MBook1, MSheet1定义完 range variable 后可以进行一些基本的运算,如:range r1 = Sheet1!Col(1);
range r2 = Sheet2!Col(2);
r2 = 2*r1;当定义 range 时,active 的 window 是想要定义的 range 的 window,可以省略前面两层,如:range rr = Col(1);// First column of active worksheet
rr *= 2;如果 range variable 定义到整个 column,sheets,layer 或者整个 window,可以用 range variable 代表这些 object 并可以访问这些 object 的属性。如:range ws = sheet1! // "!" is necessary. ws represents sheet1 in book1可以敲入ws.=来列出整个 worksheet 的属性,或者修改某些属性,如
ws.name$ = "Hello"; // rename worksheet
二、直接使用 Range 只能在作为 X-Functions 的参数
X-Function 是 Origin 8 引入的新的概念,一般用户不需要了解什么是 X-Function,用户可以像使用 LabTalk 命令或者 Matlab 函数那样使用 X-Function。当在 command window 中敲入 X-Function 名字时,自动补齐功能会给你提示需要哪些参数。而 range 可以直接作为 X-Function 的参数,当然,你也可以先定义一个 range variable,再作为参数输入。比如 stats 这个 X-Function:stats col(a); // Descriptive statistics on column A of active worksheet
stats sheet2!Col(3); // Stats on column 3 of book1, sheet2
range rr = (col(a), col(b)); // Two columns in active worksheet
stats rr; // stats on range variable rr;
三、一个应用
毕竟用 LabTalk 或者 Origin C 编程的人不多,我想更多的人用到 range variable 的是在 Set Column Value 这个 dialog 上。如果 Set Column Value 需要引用的数据在同一个 worksheet 上,则 col(a)、col(b) 还是可以满足需求的,如col(b) = exp(col(a));
但若要引用另外的 workbook 或者 worksheet 上的 column 时,则需要先定义一个 range variable。如下图所示,展开下面的 Before Formula Scripts 面板,先定义一个 range variable
range rr = sheet2!col(a);
然后才在上面的 edit box 上写入 set value 的条件:
exp(rr);
[ 本帖最后由 蓝色梧桐 于 2007-10-26 00:17 编辑 ] 好,学到了!:victory:
页:
[1]