一連のテーブルをループして更新私のメインテーブルには情報がありますが、未知の理由でこれはうまくいきません。下記の添付コードを参照してください。
私のテーブルを格納する私のリストからのサンプル:
DT = {データテーブル( "Sheet1")、データテーブル( "Sheet2")……}
// 指定されたパスでエクセルファイルを開く、正常に動作する
path = "$ DOCUMENTS \ 580501 \";
ftype = ".xlsx";
// ファイルのリストを作成し、一致しないファイルをすべて削除します。正常に動作します。
flist =ディレクトリ内のファイル ( パス ) ;
にとって ( i = Nアイテム ( 飛ぶ ) 、私> 0 、私 - 、
もし ( !で終わる ( 飛ぶ [ 私 ] 、ftype ) 、
から削除 ( 私のリスト )
)
) ;
d = N個のアイテム ( 飛ぶ ) ;
// ディレクトリ580501からすべてのexcelfilesをインポートしてリストに保存すると、うまくいきます。
しながら ( d> 0 、
i = 1 ;
dtt =オープン (……)
// 私のコードのこの部分はうまく動きます
DT =リスト () ;
s = 1 ;
にとって ( i = 1 、i≦Nテーブル () 、私は+ +、
もし ( データ表 ( 私 ) != "ISAC_STAT"、
に挿入 ( DT、データテーブル ( の ) ) ;
s = s + 1 ;
)
) ;
// DTで開いているすべてのテーブルを解析します
にとって ( i = 1 、i≦Nテーブル () 、私は+ +、
dtt =データテーブル ( DT ( 私 ) ) ;
// 他のテーブルに対して更新する前に、特定のテーブル「sheet1」を1つ見つけて更新する必要があります。
// sheet1には他のテーブルと照合するために必要な情報が含まれているので、main1を更新する必要があります
//最初にテーブル
にとって ( k = i、k <= N表 () 、k ++、
//私このIf文が私の問題の原因であると思いますが、私はその理由を知りませんか?
//このIf文のいくつかのバージョンを試してみました。
// (Char(DTs [k])、Char( ""データテーブル(“ sheet1”)“)== 1を含みます。
//(DTs [k]、“ sheet1”)== 1を含みます
//(DTs [k]、“データテーブル( "Sheet1"))“ == 1を含む
//しかし何も動作しません。
もし ( 含む ( チャー ( DT [ k ] ) 、"シート1" ) == 1 、
データ表 ( 「マイテーブル」 ) << 更新 (
あり ( データ表 ( "シート1" ) ) 、
一致列 ( :ロット=:ロット ) 、
更新テーブルから列を追加 ( 無し )
) ;
) ;、
) ;
// 私はこのIf文が私の問題の原因であると思いますが、私はその理由を知りませんか?
もし (
DT [ 私 ] != "シート1"&DT [ 私 ] != "シート2"&DT [ 私 ] != "シート3"&DT [ 私 ] != "シート4"、
やってみる (
データ表 ( 「マイテーブル」 ) << 更新 (
あり ( DT [ 私 ] ) 、
一致列 ( :ロット=:ロット| :ロット=:テストロット ) 、
更新テーブルから列を追加 ( 無し )
;
;
//上記と同じupdateコマンドを使用しますが、異なる列を照合します
…
;
これが機能する簡単なコードスニペットです。
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リストは以下のような値の文字列を格納します。データ表 ( 「シート1」 したがって、私は2つの特定のテーブルを探しているところで、入れ子になったforループを実装することに成功しました。
しかし、後者の場合、特定の種類のテーブルを使用したくない場合、これがエラーかもしれません。DTの文字列値を特定のキーワードに一致させるためにcontains-functionsを使用しています。
例えば:
(DTs [i]、"water")を含むか(DTs [i]、"water")を含むか(DTs [i]、"food_1")を含む場合
何もしない
、
それ以外の場合はメインテーブルを更新します。
food_1とfood_2の両方のテーブルがある場合があることに注意してください。ここでは、food_1を無視し、food_2を使用する必要があります。
contains関数を正しく使用していませんか。
こんにちは、
Craigeのポイントに加えて、あなたが探している文字列に問題があります。 DTリストに値を挿入すると、データテーブル( "tableName")が挿入されます。 それであなたのDTリストはこのようなものを表します:
{Data Table( "Sheet1" ), Data Table( "Sheet2" )} ;
それでも、ほとんどのContains()関数では、DTのリストの項目の大文字と小文字が同じでもパターンも共有しない文字列値を検索しています。 "シート1" 。 これが、これらのContains()関数が0を返す理由です。 言い換えると、
"Sheet1" != "sheet1"
ここで重要なのは、検索文字列はContains()に検索させたい値と同じでなければならないということです。