[[20230426120558]] 『長さ0の文字列について』(tama) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『長さ0の文字列について』(tama)

長さ0の文字列についての質問です。
初めに具体例を記入いたします。


    P          AC
8              -


P8セル内数式
=@IFERROR((FILTER(table[時間],("佐藤 太郎"=table[氏名])*(table[年月]="202303"))+FILTER(table[休日時間],("佐藤 太郎"=table[氏名])*(table[年月]="202303")))/60,"")

AC8内数式
=IF(P8>50,"×","-")


P8セルで個人のとある時間の計算をしています。
途中テーブルを参照して計算していますが、今回はその計算結果が存在せず、iferrorの処理により長さ0の文字列("")が計算結果となった場合についての質問であり関係ないため割愛しています。


長さ0の文字列""というのは、
・空白(null)ではない
・最小の文字列である
・文字列は数値より大きい
という認識で合っていますでしょうか。
とすると、nullなセルを参照して大小比較した場合は0扱いで計算されるため、AC8の関数を当てたときは-が表示されるが、関数によって長さ0の文字列が表示されているセルを参照した場合は、文字列は数値より大きいため×が表示されると思います。
実際に私以外の人が同様の作業をしたときは×表示がされていました。
ただ私の環境では、最初に示したように長さ0の文字列""が入っているP8セルを参照してAC8の数式を実行すると-が表示されるのです。
(countblankやisblankで判定してもP8は空白ではないと返ります)
そもそも空白の場合は-と表示してほしいのでこれで私は問題ないのですが、別の人へ解説する際に困ってしまったため解決の必要があります。

考えられる原因は二つあると考えます。
?@長さ0の文字列は数値0として計算する のような設定がどこかに存在していて、意図せずそれが実行されている。
?A私が入力している関数と、別の人が入力している関数は若干違いがあり、それが動作に影響している(結果を合わせるための検証として同一関数を入力してテストもしましたが、同じ関数なのに答えが×と-で分かれました。どこか見落としの可能性もあるか)

そもそも長さ0の文字列の処理について認識が間違っている可能性も大いにあるかと思いまして、似たような壁に当たったことのある方がいらっしゃればご教授いただきたく投稿させていただきます。
よろしくお願いいたします。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


セルに ="" と書いて、セルをコピーして値だけ張り付け
後は自分で色々試してください。

・空白(null)ではない

空白がNULLって誰から聞いたの?

(ヌルヌル) 2023/04/26(水) 13:02:31


 >=IF(P8>50,"×","-")

 P8が空白文字列「""」の場合はハイフンにしたいのなら
 N 関数を使って

 =IF(N(P8)>50,"×","-")
     ~~~~~
 N 関数は文字列を「0」に変換するので ×にはなりません。

 質問の答えになってないかもしれませんが・・・

 参考まで
(笑) 2023/04/26(水) 14:09:14

(ヌルヌル)さん
>セルに ="" と書いて、セルをコピーして値だけ張り付け
行いました。
見た目上空白なのにisblankで空白ではないと表示されました。
その状態が関数で""が返されているときと同じ状況ということですよね。
それはつまり長さ0の文字列であり、50と大小比較した場合は大きいと結果が返ってくるはずですよね。
それがこないのはなぜか、そういう事例はあるのかが知りたいです。

(笑)さん
N関数を使用していないのに×にならず-になる場合とは何が考えられますでしょうか…
(tama) 2023/04/26(水) 15:28:52


 多分、値は0だが、表示させない設定になっている。(書式か、なにか)

 どこか空いているセルにこんなのを入れてみる。
              ↓
            ="#"&P8&"#"

 「#0#」となるか「##」となるかでチェック可能。
  ※前者なら数値(見えないだけ)、後者なら空白文字

(半平太) 2023/04/26(水) 15:56:08


(半平太)さん
確認いたしました。結果、
「##」と表示されました。
この場合空白文字ですのでやはりN関数を使用していないのに50より小さいと判別されるのは変な挙動ではないでしょうか。

検証していて気づいたのですが、
文字列は=0なのでしょうか…?
というのも、
=if(A1=0,〇,×)として、A1にabcや佐藤など数字以外の文字を入れると〇と表示されるのです。
ですから、空白文字は0だから、50より小さいとなってしまうのではないかと考えました。
(tama) 2023/04/26(水) 16:21:44


 >=if(A1=0,〇,×)
 =IF(A1=0,"○","×") の間違いだとして

 ファイル〜オプション〜詳細設定の一番下
「計算方式を変更する」にチェックが入っていませんか?

 以上、確認
(笑) 2023/04/26(水) 16:34:17

(笑)さん
間違いでした。Excel上は正しく入力されています。

チェックがはいっています…!
おそらくどこかの開発段階でエラーが発生することに困ってチェックをつけたのでしょうね…

原因が分かってすっきりしました。これで人へ説明することができます。
本当にありがとうございました。
(tama) 2023/04/26(水) 17:15:09


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.