我正試圖循環一系列表格更新我的主表有信息,但由於未知原因,這將無法正常工作。請參閱下面的代碼附件
我的List中存儲我的表的示例:
DTs = {數據表(“Sheet1”),數據表(“Sheet2”)......}
// 在指定的路徑中打開excelfiles,工作正常
path =“$ DOCUMENTS \ 580501 \”;
ftype =“。xlsx”;
// 製作文件列表,刪除所有不匹配的文件,工作正常
flist =目錄中的文件 ( 路徑 ) ;
對於 ( i = N項 ( 的flist ) ,我> 0 ,一世 - ,
如果 ( !以。。結束 ( 的flist [ 一世 ] ,ftype ) ,
從......中去除 ( 弗洛伊斯,我 )
)
) ;
d = N項 ( 的flist ) ;
// 從目錄580501導入所有excelfiles並將它們存儲在列表中,工作正常
而 ( d> 0 ,
我= 1 ;
dtt =開放 (......)
// 這部分代碼工作得很好
DTs = List () ;
s = 1 ;
對於 ( 我= 1 ,我<= N表 () ,i ++,
如果 ( 數據表 ( 一世 ) !=“ISAC_STAT”,
插入 ( DT,數據表 ( 小號 ) ) ;
s = s + 1 ;
)
) ;
//解析DT中所有打開的表
對於 ( 我= 1 ,我<= N表 () ,i ++,
dtt =數據表 ( DT的 ( 一世 ) ) ;
// 我需要找到一個特定的表“sheet1”並在我可以更新其他表之前更新
// sheet1包含與其他表匹配所需的信息,因此它必須更新我的main
//表首先
對於 ( k = i,k <= N表 () ,k ++,
//一世想想這個if語句是我問題的根源,但我不知道為什麼?
//我已經嘗試了這個If語句的幾個版本:
// 包含(Char(DTs [k]),Char(“”數據表(“sheet1”)“)== 1
//包含(DTs [k],“sheet1”)== 1
//包含(DTs [k],“數據表(”Sheet1“)”== 1
//但沒有任何作用。
如果 ( 包含 ( 燒焦 ( DT的 [ ķ ] ) ,“sheet1” ) == 1 ,
數據表 ( “我的桌子” ) << 更新 (
同 ( 數據表 ( 而“sheet1” ) ) ,
匹配列 ( :批次=:很多 ) ,
從更新表添加列 ( 沒有 )
) ;
) ;,
) ;
// 我想這個If語句是我問題的根源,但我不知道為什麼?
如果 (
DT的 [ 一世 ] !=“sheet1”和DT [ 一世 ] !=“sheet2”和DT [ 一世 ] !=“sheet3”和DT [ 一世 ] !=“sheet4”,
嘗試 (
數據表 ( “我的桌子” ) << 更新 (
同 ( DT的 [ 一世 ] ) ,
匹配列 ( :批次=:批次| :批次=:測試批次 ) ,
從更新表添加列 ( 沒有 )
);
);
//我使用與上面相同的更新命令,但匹配不同的列
...
);
這是一個簡單的代碼片段:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// dt = DataTable("Big Class");
If (Contains(Char(dt),"Big Class"),
show("found")
,
show("not found")
)
正如Wendy所指出的那樣,Contains函數區分大小寫,所以我通常會強制使用例如
If (Contains(LowerCase(Char(dt)),"big class"),
大家好,感謝您的快速解答,
如你所說,DTs列表存儲的字符串值如數據表 ( “工作表Sheet1” 因此我成功實現了嵌套的for循環,我正在搜索兩個特定的表。
但是在後一種情況下,當我不想使用某些類型的表時,也許這就是錯誤,我使用contains-functions將DT中的任何字符串值與某個關鍵字匹配。
例如:
如果包含(DTs [i],“soda”)或包含(DTs [i],“water”)或包含(DTs [i],“food_1”),
沒做什麼
,
否則更新主表。
請注意,有些情況下我們同時有food_1和food_2表,在這裡我們應該忽略food_1但是要使用food_2。
我使用包含功能不正確嗎?
你好,
除了Craige的觀點之外,您正在搜索的字符串存在問題。 將值插入DTs列表時,您將插入數據表(“tableName”)。 所以你的DTs列表代表如下:
{Data Table( "Sheet1" ), Data Table( "Sheet2" )} ;
但是在大多數Contains()函數中,您正在搜索不共享DTs列表中項目的相同大小寫或模式的字符串值,例如而“sheet1” 。 這就是這些Contains()函數返回0的原因。 換一種說法,
"Sheet1" != "sheet1"
這裡的要點是搜索字符串必須與您希望Contains()查找的值相同。