電子書籍の厳選無料作品が豊富!

次のような判定を行う関数を作成中です

・規格と測定値を比較し、測定値が規格内かどうかを判定する
・規格にはいくつか表記の種類がある(代表例は下記4つ)
 『10±5』,『10+5/-0』,『10±5mV』,『汚れなき事』
・測定値は数値のみの入力
(ただし規格が数値でなければ測定値は判定結果のOKかNGを記入)

現在、代表例の1つめにある規格の文字列で±を+と-に置換して計算し、
MaxとMinに代入して、測定値と規格を判定する所までは出来ています。
ただ、規格の表記がバラバラな事が問題で、読み取った規格が
『数字』±『数字』
でなければ、正常に作動しません。
上記にあるような規格から、最大値と最小値を求める方法はあるのでしょうか?
どうにかして数字以外の文字列を削除する方法を教えてください。

A 回答 (3件)

この質問はエクセルのワークシート関数の範囲内での質問か、


VBAのユーザー関数などまで広げての質問か
どちらか判らない。
ーーー
#1の補足を読んでも、質問の意味が良くわからない。
ーーー
>文字列内から数字以外を判定して・・
削除するのは文字単位で削除するのか?
±も数字ではないと思うが、削除するのか。
ーーー
VBAを使わず、エクセル関数で、文字単位で数字以外を削除するのは
難しいと思うが。
ーーー
削除する文字が決っていて、かつ少数であれば
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"a",""),"s",""),"d",""),"e","")
のようにネストする方法もある。aなどは複数文字の文字列でも使える。
123asd12 --> 12312
ネストの深さの数にも制限はあると思うが。
    • good
    • 0

「汚れなきこと」という規格をどう判定するのか解らないのでおいといて


右側に”mV”以外の文字は現れないのでしたらreplace関数で可能です。
mV以外にもいくつかしかないのでしたらこれを複数回利用すればいいでしょう。

文字列の右側に位置する文字列を削除するということでしたら
「規格」の文字列を後ろからmid関数で1文字ずつisnumberで評価して
数字じゃなくなったらその位置から後ろをleft関数でカットlしたらどうですか?
    • good
    • 0

ご質問の意味がよく理解できません。

どんな測定値があってそれはどんな規格で判定するのかいくつかの例を具体的にあげて示していただけませんか。
    • good
    • 0
この回答へのお礼

>どんな測定値があってそれはどんな規格で判定するのか
具体的な規格については、質問内の例で考えて下さい。

入力例としては、下記のように考えています。
汚れなき事 OK OK OK
10±5    6 7 8
10±5mv 6 7 8
10+5/-0 10 11 12

質問の最後にあるように、『文字列内から数字以外を判定して削除する方法』さえ分かればいいのです。

お礼日時:2009/09/12 11:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!