# 条件分岐でnullがうまく分岐されなくなりました

**URL:** <https://forum.uipath.com/t/null/560494>\
**Category:** フォーラム\
**Tags:** studio, excel\
**Created:** [July 5, 2023, 7:50am UTC](https://forum.uipath.com/t/null/560494 "2023-07-05T07:50:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 5, 2023, 7:50am UTC](https://forum.uipath.com/t/null/560494/1 "2023-07-05T07:50:22Z")

</div>

エクセルファイルを開き、データテーブルを読み込み、繰り返し(各行)で  
指定列に入力があればTRUEでWEBシステムへ入力、  
空白の場合FALSEで繰り返すように条件分岐しています。

これまで特に問題がなかったのですが、  
急に空白をFALSEとせずTRUEに行くようになってしまいました。  
条件分岐には ROW（“指定列”）.ToString \<\> ""としているのですが  
理由を思いつく方はいらっしゃいますでしょうか。

直近の変更点で思いつくこととしては  
エクセルファイルの保管場所が共有サーバーからboxなったことくらいです。

ご教示頂けますようよろしくお願いします。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 5, 2023, 8:04am UTC](https://forum.uipath.com/t/null/560494/2 "2023-07-05T08:04:58Z")

</div>

こんにちは

データが変わった可能性を疑った方が良いかと思います。  
条件分岐の手前でログ出力で例えば、`ROW("指定列").ToString().Length`を出力してみて0になっているかどうかを確認してみてはと思います。

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 5, 2023, 8:22am UTC](https://forum.uipath.com/t/null/560494/3 "2023-07-05T08:22:57Z")

</div>

ご返信ありがとうございます。

ブレークポイントを置いてみたのですが  
下記のような表示になっております。  
（見る部分は合ってますでしょうか。。。）

object[43]部分すべての表示は省略しておりますが  
189の右隣の部分が空白なのにFALSEとならない状況です。

DataRow { HasErrors=false, ItemArray=object[43] { “Y”, , , 189, }, RowError=“”, RowState=Added, Table=[DataTable] }

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 5, 2023, 8:25am UTC](https://forum.uipath.com/t/null/560494/4 "2023-07-05T08:25:38Z")

</div>

これではわかりませんので

`ROW("指定列").ToString().Length`  
を出力するか、あるいは

```
別の変数 = ROW("指定列").ToString().

```

別の変数の中身を確認してください。（見た目で判断できないケースがあるので、長さを確認するのが一番良いかと思います。）

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 5, 2023, 9:51am UTC](https://forum.uipath.com/t/null/560494/5 "2023-07-05T09:51:59Z")

</div>

問題となっている場所を出力してみました。  
ROW(“指定列”).ToString().Length → 15  
ROW(“指定列”).ToString() → System.Object

このようになりましたが原因わかりますでしょうか。  
空白なのに15と出るのはなぜでしょうか。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 5, 2023, 9:56am UTC](https://forum.uipath.com/t/null/560494/6 "2023-07-05T09:56:26Z")

</div>

空白ではありません。

```
ROW(“指定列”).ToString() → System.Object[]

```

なので`System.Object[]`がいます。  
これが分岐しない理由です

このデータがどこから来たかはロジックを遡っていく必要があるのではないかと思います。

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 5, 2023, 10:20am UTC](https://forum.uipath.com/t/null/560494/7 "2023-07-05T10:20:09Z")

</div>

ありがとうございます。

ただ、ほかのエクセルファイル（完全に新規のものも試しました）で空白列を出力しても  
System.Objectと出ます。

System.Objectでも条件分岐できる書き方はありますでしょうか。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 5, 2023, 10:21am UTC](https://forum.uipath.com/t/null/560494/8 "2023-07-05T10:21:29Z")

</div>

こんにちは

ROWの型は何でしょうか？DataRow? DataTable?

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 5, 2023, 11:34am UTC](https://forum.uipath.com/t/null/560494/9 "2023-07-05T11:34:31Z")

</div>

何度も申し訳ありません。  
私の出力方法がおかしいと思い改めて確認しました。

先ほど出力した際は,別のシナリオを作成し、  
列を読み込み（セル指定）→ メッセージボックス表示 させたのですが  
普段使っているシナリオと同じ環境で改めて出力しました。  
その結果は下記となりました。  
ROW(“指定列”).ToString().Length → ０  
ROW(“指定列”).ToString() →”何もなし”

この結果を見るとrow(“指定列”)はnullと判定されそうな気がするのですが  
ますますわからなくなってしましました。  
ちなみにROW（“指定列”）.ToString \<\> ""はandを使って10くらいつなげています。  
指定列の入力がないとwebシステムでエラーが発生するので  
それを避けるために条件分岐でweb入力前に振り分けをしています。

これまでは問題なくすべて判定されていたはずなのですが  
このへんに理由は考えられますでしょうか。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 5, 2023, 1:20pm UTC](https://forum.uipath.com/t/null/560494/10 "2023-07-05T13:20:06Z")

</div>

> [@7ffdf30161e05b3796f42f977](#):
>
> ちなみにROW（“指定列”）.ToString \<\> ""はandを使って10くらいつなげています。

論理計算と各々の式の値はあっていますでしょうか？  
具体的な式全体と、各条件式のそれぞれの値、期待する動作と実際の動作を  
明確化いただかないと判断できませんのでこのあたり自身でチェックされるか  
共有いただくと良いかと思います。

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 6, 2023, 2:31am UTC](https://forum.uipath.com/t/null/560494/11 "2023-07-06T02:31:39Z")

</div>

かなり長いですが条件分岐には下記式を入れています。  
最初の指定列だけ１か２，残りの指定列は何か入力があればweb入力へ進む、としたいためです。

row(“指定列”).ToString = “1” or row(“指定列”).ToString =“2” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“” and row(“指定列”).ToString \<\>“”

---

<div class="post-metadata">

**Author:** ![minami](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/minami/32/176649_2.png) [@minami](https://forum.uipath.com/u/minami)\
**Post date:** [July 6, 2023, 2:37am UTC](https://forum.uipath.com/t/null/560494/12 "2023-07-06T02:37:46Z")

</div>

これ演算子の優先順位は考慮されてるんでしょうか？

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 6, 2023, 2:42am UTC](https://forum.uipath.com/t/null/560494/13 "2023-07-06T02:42:00Z")

</div>

すべて"指定列"という列をチェックしているように見えますが、実際は違うということでしょうか？  
可能であれば列名が違うところは違うようにしてもらった方が良いように思えます。

またOR とANDの演算優先順序を意識されていますでしょうか？ANDが優先されますので意図しない結果になっているのではないかとも思います。（ row(“指定列”).ToString =“2” と後続のANDが優先されます）

> **[演算子の優先順位 - Visual Basic](https://learn.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/operator-precedence)**
>
> 詳細情報: Visual Basic における演算子の優先順位

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 6, 2023, 3:08am UTC](https://forum.uipath.com/t/null/560494/14 "2023-07-06T03:08:10Z")

</div>

まず、指定列ですが、すべて異なる列になっております。  
わかりにくくてすみませんでした。

また、演算子の優先順位に関しましては全く意識しておらず知りませんでした。。。

ただ、指定列はすべて異なりますので優先順位は影響してくるのでしょうか。

恥ずかしながらプログラミングなどの知識はなく  
当方営業現場レベルで最初にベンダーさんに作ってもらったシナリオを  
ネットなどで検索しつつ修正を入れながら使っている状況です。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 6, 2023, 3:44am UTC](https://forum.uipath.com/t/null/560494/15 "2023-07-06T03:44:31Z")

</div>

こんにちは

ANDとORの使い方が間違っているかもしれません。

問題をシンプルにして  
仮にA,B,C３つの列があったとき  
Thenに遷移したい条件は具体的にどれになりますか？

Aは1か２とのことでしたが、仮にAが1のときに、BとCはどのような値であってもThenにいってもよいのでしょうか？あるいはB,Cとも値が入っている必要があるのでしょうか？  
あるいは  
Aは空欄、Bは何らかの値がある、Cは空欄の場合はどうなりますでしょうか？

---

<div class="post-metadata">

**Author:** ![minami](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/minami/32/176649_2.png) [@minami](https://forum.uipath.com/u/minami)\
**Post date:** [July 6, 2023, 4:34am UTC](https://forum.uipath.com/t/null/560494/16 "2023-07-06T04:34:52Z")

</div>

orとandを同列にかいて思った通りに動くと思っている時点でアウトかと。  
(列A=1 or 列A=2) and 列B＜＞"" and 列C \<\> “” ・・・  
がやりたいことではないのでしょうか？

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 6, 2023, 5:12am UTC](https://forum.uipath.com/t/null/560494/17 "2023-07-06T05:12:15Z")

</div>

Aが１か２且つB,C,E,F,とも必ず入力が必要となります。  
Cだけが空欄の場合はnullと判定しfalseに進みたいです。

まずはminamiさんが提示してくれた  
＞(列A=1 or 列A=2) and 列B＜＞"" and 列C \<\> “” ・・・  
を試してみます。

これまでBやC以降が未入力の場合はfalseでエラーとしてメール通知をしていたつもりでしたが  
頻繁に起こるものでもなかったので私が見逃していたのかもしれません。  
thenに進んだとしてもWEB入力後チェックボタン押下時に結局エラーとなり  
エラーとして通知はされておりましたので。

結果またご報告します。

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 6, 2023, 5:12am UTC](https://forum.uipath.com/t/null/560494/18 "2023-07-06T05:12:44Z")

</div>

ありがとうございます。  
早速試してみます。  
結果ご報告します。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [July 6, 2023, 5:25am UTC](https://forum.uipath.com/t/null/560494/19 "2023-07-06T05:25:29Z")

</div>

これですと、かっこは必要ですね。

OR：論理和、AND：論理積

和（＋） と積（×）の計算順序と同じになります。

```
 1+1x0

```

なのか

```
(1+1)x0

```

なのかということになります。

---

<div class="post-metadata">

**Author:** ![7ffdf30161e05b3796f42f977](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/7ffdf30161e05b3796f42f977/32/515111_2.png) [@7ffdf30161e05b3796f42f977](https://forum.uipath.com/u/7ffdf30161e05b3796f42f977)\
**Post date:** [July 6, 2023, 5:30am UTC](https://forum.uipath.com/t/null/560494/20 "2023-07-06T05:30:30Z")

</div>

ありがとうございます！  
希望通りにnull判定が出て入力前にエラー通知が出せました。  
算数のような考え方になるのですね。

ベースの知識がない中で質問自体に時間がかかってしまったことお詫びいたします。  
今後質問するときには具体的に極力画像や式をそのまま投稿するようにします。

本当にありがとうございました！！

[Next page](https://forum.uipath.com/t/null/560494.md?page=2)
