• 締切済み

判定関数の作成

次のような判定を行う関数を作成中です ・規格と測定値を比較し、測定値が規格内かどうかを判定する ・規格にはいくつか表記の種類がある(代表例は下記4つ)  『10±5』,『10+5/-0』,『10±5mV』,『汚れなき事』 ・測定値は数値のみの入力 (ただし規格が数値でなければ測定値は判定結果のOKかNGを記入) 現在、代表例の1つめにある規格の文字列で±を+と-に置換して計算し、 MaxとMinに代入して、測定値と規格を判定する所までは出来ています。 ただ、規格の表記がバラバラな事が問題で、読み取った規格が 『数字』±『数字』 でなければ、正常に作動しません。 上記にあるような規格から、最大値と最小値を求める方法はあるのでしょうか? どうにかして数字以外の文字列を削除する方法を教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

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

全文を見る
すると、全ての回答が全文表示されます。
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.2

「汚れなきこと」という規格をどう判定するのか解らないのでおいといて 右側に”mV”以外の文字は現れないのでしたらreplace関数で可能です。 mV以外にもいくつかしかないのでしたらこれを複数回利用すればいいでしょう。 文字列の右側に位置する文字列を削除するということでしたら 「規格」の文字列を後ろからmid関数で1文字ずつisnumberで評価して 数字じゃなくなったらその位置から後ろをleft関数でカットlしたらどうですか?

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

ご質問の意味がよく理解できません。どんな測定値があってそれはどんな規格で判定するのかいくつかの例を具体的にあげて示していただけませんか。

miniture_min
質問者

お礼

>どんな測定値があってそれはどんな規格で判定するのか 具体的な規格については、質問内の例で考えて下さい。 入力例としては、下記のように考えています。 汚れなき事 OK OK OK 10±5    6 7 8 10±5mv 6 7 8 10+5/-0 10 11 12 質問の最後にあるように、『文字列内から数字以外を判定して削除する方法』さえ分かればいいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル関数でこんな判定?

    A1:B20にリストがあります。 A列は文字列です。 B列は数値です。 質問1 A列に入力があり、同行のB列が空白または0というものが1つでもあるかどうかを判定する関数を教えてください。 質問2 B列に入力があり、同行のA列が空白というものが1つでもあるかどうかを判定する関数を教えてください。 多分SUMPRODUCTを使うのだとは想像するのですが、手がでません・・・・。(泣)

  • エクセル関数でこんな判定?

    エクセル2000です。 質問1 A1:A20にリストがあります。 入力されているのはすべて数値としての数字です。 このリストは本来、上のセルの値が常に下のセルの値より大きくなければなりません。(上のセル>=下のセル。空白セルは0とみなす。) もし下のセルの方が大きかった場合を判定するにはどうすればよいでしょうか? 質問2 上記の表がA1:D20まであり、それぞれの列内のみで上記を判定し、A~Dのどこかひとつでも「上のセル<下のセル」があるかどうかの判定。 もちろん作業列を設け、「=上のセル-下のセル」の答えがひとつでもマイナスになれば、そうとわかりますが、作業列をつかわず、ワークシート関数で調べる方法を知りたいのです。 よろしくお願いします。

  • 文字の判定について

    はじめまして。 vba初心者でして、とても困っているのです。 セルの値が数字かどうかの判定はどうやら IsNumeric で出来るようですが、 英数字かどうかの判定方法がわかりません! (半角の数字とアルファベットのみの文字列かどうか) ご存知の方いらっしゃったら教えてください! お願いします。

  • エクセルの関数で値の判定

    A1セルの値が、0より大きい数値または文字列の「USA」か「UK」の場合のみTRUEを返したいのです。 =OR(A1>0,A1={"USA","UK"}) としてみましたが、AとかBとかの文字列も0より大きいとみなされるようでTRUEになってしまいます。 やむをえす、 =OR(AND(ISNUMBER(A1),A1>0),A1={"USA","UK"}) としてみましたが、もっと簡単に判定する方法はないでしょうか? エクセル2013です。

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。 私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。 かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。 一二三『一二三にそれぞれ♪マーク』 という文章に対して 一♪二♪三♪ という一括置換をすることには成功しました。 こう書いています。 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪ これでぶじ、以下のように一括置換できました。 一♪二♪三♪ 現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。 この調子で長い文章も変換できていて満足していたのですが…… しかし代入文字が10個以上になったとたんに、まったく動きません。 ■置換したい文章 一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪ こうやると、置換後の文章は以下のようになってしまいます。 一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪ 10個目以降の数字が、正しく機能してくれません。 \10  という正規表現の書き方は 「一番目の値を参照して、それから数字の0を記入しなさい」 という意味になってしまうようです。 わたしは十番目の値を代入してほしいだけなんです。 \1 や \2 や \3 といった代入文字のように \10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。 ちなみに以下のように書いてもダメでした……。 \1\0 グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

  • 数字か文字列かを判定する関数

     JAVAの初心者です、宜しくお願いします。     テキストボックスに入力された値を、数字か文字列かを判定する関数ってありますか、VBでは「isNumeric」とかがあるのですが、JAVAではヒットしませんでした。  どこからどのように調べるのでしょうか。  いいサイトがあれば教えて下さい。

    • ベストアンサー
    • Java
  • EXCELで文字検索&置換え

    下記のような処理がEXCELの機能で可能かどうか教えてください。 2つのシートがあります。 1つめのシートには数値のみ(例:1,2,3・・・・)、 2つめのシートには数値とそれに対応する文字列(例:1,2,3・・・・と太郎、次郎、三郎・・・)をテーブルのように持っています。 行いたい処理は、 (1)1つめと2つめのシートの数値を比較して (2)同じ数値であれば2つめのシートから数値に対応している文字列を持って来て、 (3)1つめのシートに表示させる(数値の横の列) ことです。 このような処理がEXCELの機能のみで処理可能かご存知の方がいらっしゃいましたら教えてください。 (可能でないならばVBAで行うことを検討しています)

  • 使用する数式によって結果表示セル値の扱いが異なりますか

    2007使用です。 仮に、A-J列までそれぞれ計算式が入ったセルがあり、一桁の数字が表示されています。 各行ごとのMAXとMINを取りだそうとするといずれも0が返ってきて数値でないからダメなのだろうと思い、当然COUNTIFで0から9までのそれぞれの個数は出ないと思っていました。が、キチンとカウントされます。 なぜだろう、という疑問が解決できません。 例えば、あるセルに「19」という数値が入っていて、19-10=9と下一桁を抜き出した場合の9は同じ「9」としての判定にはならないハズと思っているのですが・・。 RIGHTで切り出したものは、前記例の場合、「9」という文字なのか数値のままなのか判断がつきません。文字だとするとMAXがエラーとならずに、どの行も「0」となるのも疑問です。 考えかたのどこにアナがあるのかご教示ください。

  • 半角数字かどうかの判定

    いつもお世話になっております。 VB6を使っているのですが、文字列が半角数字かどうかの 判定をしたいのですが、何かいい方法はないでしょうか? どうかよろしくお願いいたします。

  • VBAで文字列を部分的に抽出・置換する方法

    例えば x = "xyz: 123 [kg]" という文字列を変数xに代入した後に "123"の部分だけ数値として抽出し、 更に123を567に置換して x = "xyz: 567 [kg]" にという文字列に変換したいのですがどのようにすれば良いでしょうか?

専門家に質問してみよう