私はいつもエクセルでANDやORなどを使った論理演算には、N関数を被せて真偽は1, 0で判断していました。エクセルとVBAの間での論理値(ブール型)の受渡しで何度か失敗していましたので、1, 0を使うようになりました。スプレッドシートとGASではどうでしょうか?
そこで同じような失敗をしないために、スプレッドシートとGASで論理値の受渡しのテストをしてみました。
スプレッドシートのN関数についてgoogleから引用
N
N - Google ドキュメント エディタ ヘルプ
指定された引数を数値として返します。
使用例N(A2)
N(4)
構文N(値)
値
- 数値に変換する引数です。値
がTRUE
の場合、N
関数は1
を返します。値
が数値の場合は数値を返します。値
が日付や時刻の場合、N
関数は 12 月 30 日からの日数に基づいて生成されたシリアル値を返します。負の値はこの日より前の日付として解釈され、小数値は午前 12 時以降のその日の時刻を示します。値
がFALSE
であるか上記以外の値の場合、N
関数は0
を返します。
メモ
その他のセルの数値にN
関数を使用する場合、表示形式(通貨や科学的記数法など)は失われます。N
関数の戻り値に表示形式を設定するには、関数を含むセルに目的の形式を適用してください。
Google スプレッドシートでは大半の表示形式が適切に自動変換されるため、N 関数は実際にはあまり必要ありません。この関数は主に、他のスプレッドシート パッケージで使用する数式との互換性のために提供されています。
エクセルのN関数と機能はほとんど同じでした。
スプレッドシートとGASで論理値の受渡しテスト
まずスプレッドシートに論理値の表示をします。
各セルに次の関数(AND)を入力しました。
結果、
次にスクリプトエディタより、各セルの値を取得と表示するスクリプトを組みました。
以前にgetValueとgetDisplayValueの使い分けに悩みましたので、ここでも比較します。
結果、
う~ん、これはgetValueが正しくブール型と判断した結果でしょうか?
TRUE ⇒ getValue ⇒ true
FALSE ⇒ getValue ⇒ false
TRUE ⇒ getDisplayValue ⇒ TRUE
FALSE ⇒ getDisplayValue ⇒ FALSE
(ところでGASでは、真偽論理値がtrueとfalseなのですね。TrueとFalseだと思っていました)
N関数を被せます。
結果、
すこ~し予想外?です。整数(1, 0)で表示されると思いました。
では実行です。
これも少し予想外でした。すべて1.00で表示すると思いました。
結論
個人的にはテストしてよかったと思いました。GASでの真偽論理値の勘違い(✖True、✖False ⇒ 〇true、〇false)にも気付けました。私はこのような予想と結果の違いがあるので、エクセル&VBAでは論理値の真偽判断に、N関数を被せた1, 0を使っていたのでしょうね。うっかりな私には、スプレッドシート&GASの環境でもN関数が必要そうです。
でもブール型は、全て同じ文字で統一してほしかったとも思いました。
それではまた、
コメント