読者です 読者をやめる 読者になる 読者になる

xoBlosのAND、OR、NOTとド・モルガンの法則

xoBlosではいろいろな条件を表すキーワードがあります。

Exporter(抽出処理)での「高度なスキップする行の条件」(長い!!汗)や Importer(作成処理)の「高度選択条件」「高度スキップ条件」等ですね。

これらは全て横に並べた条件はANDで、縦に並べた条件はORという原則が適用 されます。

で、何が「高度」なのかというと、条件の指定の仕方に全て否定形(NOT)が用意 されているというのがあります。例えば Like '%abc%' に対して NotLike '%ABC%'

=(等しい)に対して !=(等しくない)、>= に対して < 等です。

「高度なスキップする行の条件」で E列が30以上で50未満を抽出したくないなら

高度なスキップする行の条件 E1   >= 30   E1   < 50

とすれば良いですね。これは横に並べたからANDです。つまり

(E1 >= 30)  AND  (E1 < 50)

です 。

では、E列が30以上で50未満を抽出したい ならどうしますか?

逆を考えましょう。抽出したい条件を否定したものが抽出しない条件になります。

じっくり考えれば

(E1 < 30)  OR  (E1 >= 50)

とわかるでしょうが、これを機械的にやる方法があります。ド・モルガンの法則を 使うというものです。今、(E1 < 30)のような条件を A とか B で表すことにします。  

また、A の否定を A と表します。ド・モルガンの法則では

A AND BA OR B    { (A AND B) } の否定は{ (Aの否定) OR (Bの否定) } と同じ

A OR BA AND B    { (A OR B) } の否定は { (Aの否定) AND (Bの否定) }と同じ

となります。イメージとしては、全体の否定は各部の否定のANDとORを入れ替えた組合せ になるということです。(簡単ですね!!)

ということで

(E1 >= 30)  AND  (E1 < 50)  は  (E1 >= 30)  OR  (E1 < 50)

となり、(E1 >= 30)の否定は (E1 < 30) で (E1 < 50)の否定は (E1 >= 50)ですから、 結局 (E1 < 30) OR (E1 >= 50) となります。ORは縦に並べるですから

高度なスキップする行の条件 E1   < 30

高度なスキップする行の条件 E1   >= 50

が答えです。

Importer(作成処理)の場合はどうでしょうか?

例えば 年齢が 30以上で50未満のものだけを取込みたいなら、

高度選択条件で (年齢 >= 30) AND (年齢 < 50) としたい訳ですが、Importerでは 「年齢」という項目は一つしかなく、横に並んでいないので値をコピーでもしないと ANDにできません。しかし、Importerには逆の「高度スキップ条件」があります。 またまた、ド・モルガンの出番です。

入力項目名     年齢

高度スキップ条件  < 30

高度スキップ条件  >= 50

とすればOKです。ド・モルガン様々ですね。

 

蛇足、

なぜImporterには「高度選択条件」「高度スキップ条件」があるのに、Exporterには 「高度なスキップする行の条件」しかないのか?その理由の一つがExporterでは同じ 項目(列)が簡単に横に並べてANDを作り出せるからです。Importerでそのようなことを しようと思えば 「取得データの組合せ」または「取得データの切り出し」 を使うことになります。