正在查找列号?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我需要列号。我有列的名称,但它可能并不总是在同一个空间中。
我首先决定使用 While 循环,该循环在找到列时停止迭代。“n”将是列号,但它不起作用。
科尔发现= 0 ;
n = 0 ;
尽管(科尔发现== 0 ,
n ++;
列名=列名( n ) ;
如果(列名==电压,科尔发现= 1 , ) ;
) ;
我收到此错误:“列名称”的访问或评估中的参数无效,列名称/*###*/(n)
但是,如果我使用它(这一次我知道实际数字),它会返回我正在查找的列名称:
col = 列名称(38);
显示(列);
来自帖子(列号) ,我使用了 msharp 的建议,但仍然没有获得列号,它只返回列名称?
回复:寻找列号?谢谢msharp,我会记住这一点。真是干净多了!
回复:寻找列号?就像经验法则一样。我想说,如果您的代码或表的设置方式取决于列顺序,那么您可能正在做一些难看的事情。它可能有效,但可能有一种更优雅、更快的方法来做到这一点。
当您选择显示数据时,实际上应该只在脚本末尾考虑数据顺序(并且在大多数情况下甚至没有必要,因为通常最好在图表中而不是在表中显示数据)。
话虽如此,丑陋的代码仍然有效。在您的情况下,假设您无法控制如何将数据表输入脚本中,这可能是最简单的解决方案。但是,您仍然可以像这样压缩代码:(请注意,我永远不需要知道列号)。
科尔发现= 0 ;
恩科尔斯=恩科尔( dt总结) ;
为了(我= 1 ,我<=恩科尔斯,我++,
如果(科尔发现,
如果(设备密码,
设备密码--;
插入( y_列,我,我) ;
,
休息()
)
) ;
列名= (列名称(我) <<得到名字) ;
如果(列名== “Vd” ,科尔发现= 1 ) ;
) ;
回复:寻找列号?如果我知道我的数据中总会有一个名为“Vd”的列,但它每次可能位于不同的位置,为什么我不想使用列号?在 Vd 列之后,我需要将“x”列数插入到列表中。由于在运行脚本之前列数是未知的,并且这些列的名称将根据我的数据结果确定,因此我不明白为什么使用列号是可怕的。我想当这些列被创建时,我可以将它们插入到列表中,但请解释一下为什么获取列号是可怕的?
科尔发现= 0 ;
n = 0 ;
恩科尔斯=恩科尔( dt总结) ;
为了(我= 1 ,我<=恩科尔斯,我++,
列名= (列名称(我) <<得到名字) ;
如果(列名== “Vd” ,科尔发现= 1 ;休息() , ) ;
) ;
爱科尔= 1 ;
//iCol = Contains(dtSummary << 获取列名称, Column("Vd"));
如果(科尔发现== 1 ,
y_列= {} ;
为了( n =爱科尔+ 1 , n <= (爱科尔+设备密码) , n ++,
y_列=插入( y_列, n , n ) ;
) ,);
回复:寻找列号?我想你想念我的建议。我的建议是您不应该找到列号。这是糟糕的编码实践,事实上这是可怕的。
回复:寻找列号?谢谢,很高兴你发帖!我成功了。现在我从你的帖子中了解了更多
回复:寻找列号?看起来彼得比我更快地做出回应,但这是另一种没有任何循环的方法,因此对于大量列来说它应该更快。
dt =打开( “$sample_data\镇痛药.jmp” );
列号=包含(dt <<获取列名,柱子( “药品” ));
只需将“drug”替换为您要搜索的任何列名称即可获取关联的列号。
朱利安
回复:寻找列号?哦,谢谢你抓住了!
我的代码运行良好,再次感谢。
回复:寻找列号?由于某种原因,如果未找到列名,则 while 循环无法正常工作。这有点干净:
dt =打开( “$sample_data\Big Class.jmp” ) ;
当前数据表( dt ) ;
瓦德= “高度” ;
科尔发现= 0 ;
n = 0 ;
恩科尔斯=恩科尔( dt ) ;
为了(我= 1 ,我<=恩科尔斯,我++,
列名= (列名(我) <<得到名字) ;
如果(列名==电压,
科尔发现= 1 ;
休息() ;
) ;
) ;
回复:寻找列号?列名称具有误导性 - 它返回列,例如:高度,而不是“高度”。此外,您也不会检查 n 是否超出表中的列数。这段代码将起作用:
dt =打开( “$sample_data\Big Class.jmp” ) ;
当前数据表( dt ) ;
瓦德= “高度” ;
科尔发现= 0 ;
n = 0 ;
恩科尔斯=恩科尔( dt ) ;
尽管( !科尔发现& n <=恩科尔斯,
n ++;
列名= (列名( n ) <<得到名字) ;
如果(列名==电压,
科尔发现= 1
) ;
) ;