正在尋找列號?<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
) ;
) ;