Q&A

回答の並べ替え:
投稿新規に質問を投稿する

数値(小数部あり)の整数部、小数部の桁数チェックの方法について

Akty Akty

2019-08-01 14:25

整数部6桁、小数部5桁などの入力チェックを行いたいのですが、
関数は様々ありますが、みなさんはどのような方法で整数部桁数、小数部桁数を抽出しておりますでしょうか。

また、バージョンに依存した現象かもしれませんが、数値をLEN()、LENB()を行った際に異なる値を返します。
LEN(数値7桁)=7 ・・・OK
LENB(数値7桁)=4 ・・・NG Excelでは7と返却します。

何か情報がありましたら、ご教示ください。

日本コンピュータシステム(CELFチーム) 日本コンピュータシステム(CELFチーム) パートナー
はじめまして。

入力チェックであれば、正規表現を使った方法があるようです。
例)-999.99~999.99の実数をチェック
式)=UTIL.REGEXP("^[+-]?[0-9]{1,3}.[0-9]{1,2}$",A1)
※A1は評価する値の入った座標
※正規表現の利用方法については「正規表現 正負実数チェック」などで検索すると出てきます。
メールコンタクトをとる
kurata kurata
CELF(上がLENBで下がLEN)
Excelワークシート関数(上がLENBで下がLEN)
整数小数のことではなくてLENBのことなのですが、
LENBって、Excelのワークシート関数とVBで使うときとではちょっと種類が違って
VBのときは、LENB(ここに入れる)の入れるものがString型ではない場合
「変数の文字数」を返しているわけではなくて、そのデータ型の大きさをバイト数で返します。
数値(Long型とSingle型)の場合は4バイトです。
つまり、CELFもそういうことなのではないでしょうか。

「33555.779」をCELFで見ると
「4」というのがLENBで
「18」というのがLENです。

VBAのLENBだったら、「33555.779」をString型にしたら、文字を全部2バイトで数えるので、この場合18になるのですが
CELFのここのあたりってどのような仕様になっているのかが私もよくわからないです……。Excelワークシート関数ともVBAとも挙動が違うし……。ヘルプにも書いてありませんし……。

《ご参考》
LEN 関数、LENB 関数
https://support.office.com/ja-jp/article/LEN-関数、LENB-関数-29236f94-cedc-429d-affd-b5e33d2c67cb

Len 関数(Office VBA)
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/len-function

CELFはsikuliで動いているようなのでPython関係あるのかなと思い一応こちらも
len(Python)
https://docs.python.org/ja/3/library/functions.html#len