4

なぜ=FALSE<10000000000として評価されFALSE、として=FALSE>10000000000評価されるのTRUEですか? いくつかの異なる数値を試しましたが、これは常に当てはまるようです。

4

2 に答える 2

4

これは仕様によるものです。「ソートのトラブルシューティング」のヘルプを検索して、デフォルトのソート順を確認してください。

昇順の並べ替えでは、Microsoft Excel は次の順序を使用します。

数値: 数値は、最小の負の数値から最大の正の数値の順に並べ替えられます。

英数字の並べ替え: 英数字のテキストを並べ替えると、Excel は左から右に 1 文字ずつ並べ替えます。たとえば、セルにテキスト "A100" が含まれている場合、Excel はエントリ "A1" を含むセルの後、エントリ "A11" を含むセルの前にセルを配置します。

テキストと数字を含むテキストは、次の順序で並べ替えられます。

0 1 2 3 4 5 6 7 8 9 (スペース) ! " # $ % & ( ) * , . / : ; ? @ [ \ ] ^ _ ` { | } ~ + < = > ABCDEFGHIJKLMNOPQRSTU VWXYZ

アポストロフィ (') とハイフン (-) は無視されますが、例外が 1 つあります。2 つのテキスト文字列がハイフンを除いて同じである場合、ハイフンを含むテキストが最後に並べ替えられます。

論理値: 論理値では、FALSE が TRUE の前に置かれます。

エラー値: すべてのエラー値は同じです。

ブランク: ブランクは常に最後に配置されます。

既定の並べ替え順序は、Excel がさまざまなデータ型を比較す​​るように設計されているため、重要です。論理値は常にテキストと数字の後にあります。エラー値は常に​​その後にあります。空白は常に最後です。比較演算子 (<、<=、= など) を使用すると、並べ替えと同じ比較アルゴリズムが使用されます (または、並べ替えアルゴリズムは比較演算子コードを使用するため、それらが同一になります)。

TRUE<>1並び順ですが--TRUE=1。数式パーサーは、何かを否定しようとしていることを認識しました。ブール値の場合は、それを 0 または 1 に変換します。ブール値に 0 や 1 のようなものはありません。これは、内部の Type Coercion 関数の結果にすぎません。と入力--"SomeString"すると、同じことが行われます。文字列を Type Coercion 関数に送信し、「強制できません」と報告され、最終的に #VALUE! セルで。

それが「なぜそのように振る舞うのか」という答えです。「なぜそのように設計したのか」という答えがわかりません。

于 2012-11-21T20:57:33.060 に答える
2

明らかにブール値の TRUE/FALSE は数値とは異なるデータ型です。これ ( http://msdn.microsoft.com/en-us/library/office/bb687869.aspx ) をチェックして、ブール変数が 2 バイト (または特定のアーキテクチャの短い整数) で格納されていることを確認します。ただし、これはデータが保存されるメモリです。これは、実際には Excel がブール変数用の特別なデータ クラスを持っているためです。具体的には、数値の場合は xltypeNum、文字列の場合は xltypeStr、説明する内容の場合は xltypeBool です。

同じタイプ間の関係は明らかですが、TRUE<1000 の場合はどうなるでしょうか?? おそらく意味のある有用なものは何もありません。

この問題を解決する方法:

=ABS(BOOLEAN_VAR), i.e.  =ABS(FALSE) --> 0 and =ABS(TRUE)  --> 1

また

=INT(BOOLEAN_VAR), i.e.  =INT(FALSE) --> 0 and =INT(TRUE)  --> 1 

また

=BOOLEAN_VAR*1,  i.e.  =FALSE*1 --> 0 and =TRUE*1  --> 1 

また

=+BOOLEAN_VAR,  i.e.  =+FALSE --> 0 and =+TRUE  --> 1 

これらの方法でわかるように、boolean を関数に指定するか、式で boolean var を使用することにより、Excel に数値型のデータを強制的に出力させます。

于 2012-11-21T17:37:58.210 に答える