<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />這可能是一個非常簡單的問題,但經過大量搜索和測試後我無法弄清楚。如果我只知道列對話框中的列名稱,如何獲取給定列的列號?
最小化代碼:
dlg = 列對話框( dlg_firstParam = ColList( "第一個參數"));
第一個參數 = dlg["dlg_firstParam"][1];
我 = 5; // 這是一個測試用例。假設我要選擇上面對話框中的第五列。如果這有效,我會為 i = 1 編寫一個循環到 ncol() 並根據第一個參數名稱測試列名稱( i )...但它不起作用。
顯示(第(i)列); // 返回:Column("日期");
顯示(第一個參數); // 返回: :日期;
顯示(列名(i)); //返回:日期;
//好吧,鑑於上面兩行,我想我應該能夠去掉 :Date; 中字符串開頭的冒號並與日期進行比較;如下。看起來幾乎可以工作...
a = parse(right(expr(firstParam),length(expr(firstParam))));
顯示(一); // 返回:日期;
// 好的,所以冒號被去掉了。
if(列名(i)==a,b = 1, 列名(i)!=a, b = 0);
顯示(b); // 返回 0
////////////////////////////////////
上面的代碼是一個測試,看看我是否可以循環並測試列名(i)是否=firstParam的函數。 看起來應該有效,但事實並非如此。 有任何想法嗎?
首選方法是直接返回列號。如果您能幫助我,我將不勝感激。
(編輯:只需注意將代碼中的最後一個變量從 colnumber 更改為某個非 JMP 關鍵字。colnumber 被保留。 否則工作正常。)
感謝您的解決方案! 如果數據表未在線上激活,給那些人一個小提示
colname = Column( "height" ) << getname;
那麼這條線就行不通了。 但是,如果您同時指定數據表和列名稱:
colname = dt:height << getname;
它工作完美! 只是提供一些建議,這樣其他人就不會像我一樣陷入困境;)
謝謝女士。只需注意將代碼最後一行中的“colnumber”更改為某個非 JMP 關鍵字。 否則它工作正常。
我的同事通過直接獲取號碼提出了類似的解決方案:
碰撞= dt <<獲取列名(細繩) ;
第一個參數名稱=第一個參數<<得到名字;
列號=包含(碰撞,第一個參數名稱) ;
您可以使用 Loc() 函數在所有列名列表(按數據表中的順序)中定位列名的位置。
例子:
dt =打開( “$SAMPLE_DATA/大類.jmp” ) ;
碰撞= dt <<獲取列名(細繩) ;
科名=柱子( “高度” ) <<獲取名稱;
列號= (洛克(碰撞,科名))[ 1 ] ;