データテーブルの特定の列に入った値によって判断処理を加えたい。

エクセルをデータテーブルとして格納し、特定の列に入っている値に空欄(“”)または(“-”)が入っていることが検知出来たら特定の処理をするという処理をしたいです。
この画像では
dtsample.Columns(18).ColumnName=列2としてデータテーブルの各行繰り返しで列2の中に空欄(“”)または(“-”)が一列でも含まれていたら"空欄または-あり"というメッセージログを出すという処理にしていますが想定通りの結果が出ません。記述方法が違うのかご教示いただけますと幸いです。

こんにちは

条件は例えば以下の様に記述する必要があるかと思います。

CurrentRow("列2").ToString ="" OrElse CurrentRow("列2").ToString ="-"

Yoichi様
ご教示いただきありがとうございます。
ちなみに伺いたいのですが各行の繰り返しの上層でコレクションの繰り返し(次のエクセルファイル)でくくられている(入れ子)状態で、
列確認で空欄(“”)または(“-”)があった場合処理を抜けて次のエクセルファイルにいくという処理をしたいのですがその場合は条件分岐のthenの箇所に現在の繰り返しをスキップを入れれば次のファイルに移行できるのでしょうか。あるいは各行のループしか抜けれないのでしょうか。
追加で恐れいりますがご教示いただけますと幸いです。

「現在の繰り返しをスキップ」は次のアイテムの処理に移るだけですので、ループを抜けることはできません。
「繰り返しを終了」でループを抜けることができますが、基本的には最も内側のループを抜けることになります。
上記サンプルですとファイルをイテレートするループは無いように見えますが、それがある前提ということでしょうか?

1 Like

Yoichi様
ご教示いただきありがとうございます。
申し訳ございません。サンプルにはございませんがファイルをイテレートするループがある前提でございます。
「繰り返しを終了」で採用いたします。

Yoichi様
解決済みにもかかわらず申し訳ございません。
データテーブルの各行繰り返しを終了してもやはり内側の未対象となってしまい、
ファイルとしてはクローズしない状況でございました。
画像一番上のコレクション要素の繰り返しまで終了させるコード記載方法があればご教示いただけますと幸いです。

上記で記載しました通り、繰り返しを終了は最も内側のループを抜けますので、さらに外側のループを抜けるには何らかのロジックが必要です。

たとえばshouldExitのようなBoolean変数を用意しておいて、初期値はFalse
繰り返し終了アクティビティの直前にTrueにセットしておいて
そのループの直後にこのshouldExitがTrueなら再度繰り返しを終了で外のループを抜けるようにする等が必要です。

1 Like

Yoichi様
ご回答いただきありがとうございました。
解決できました。
今後ともよろしくお願いいたします。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.