重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

すごく難しくて困ってます。

以下の表の中から該当する公差を探す関数を知りたいのですが

例:セルに 55(外径) 、 0.55(肉厚) を入力すると、隣のセルに該当する公差が出る

 

外径       肉厚       公差
5以上15以下 0.30以上0.40以下 ±0.06
15越え25以下 0.30以上0.40以下 ±0.07
25越え50以下 0.30以上0.40以下 -
50越え100以下 0.30以上0.40以下 -
5以上15以下 0.40越え0.60以下 ±0.07
15越え25以下 0.40越え0.60以下 ±0.08
25越え50以下 0.40越え0.60以下 ±0.09
50越え100以下 0.40越え0.60以下 -
5以上15以下 0.60越え0.80以下 ±0.10
15越え25以下 0.60越え0.80以下 ±0.10
25越え50以下 0.60越え0.80以下 ±0.11
50越え100以下 0.60越え0.80以下 ±0.15
5以上15以下 0.80越え1.4以下   ±0.13
15越え25以下 0.80越え1.4以下   ±0.15
25越え50以下 0.80越え1.4以下   ±0.15
50越え100以下 0.80越え1.4以下   ±0.18
5以上15以下 1.4越え2.0以下   ±0.15
15越え25以下 1.4越え2.0以下   ±0.18
25越え50以下 1.4越え2.0以下   ±0.18
50越え100以下 1.4越え2.0以下   ±0.22
5以上15以下 2.0越え3.0以下   ±0.18
15越え25以下 2.0越え3.0以下   ±0.20
25越え50以下 2.0越え3.0以下   ±0.20
50越え100以下 2.0越え3.0以下   ±0.25
5以上15以下 3.0越え4.0以下   -
15越え25以下 3.0越え4.0以下   ±0.30
25越え50以下 3.0越え4.0以下   ±0.30
50越え100以下 3.0越え4.0以下   ±0.30
5以上15以下 4.0越え5.5以下   -
15越え25以下 4.0越え5.5以下   ±0.40
25越え50以下 4.0越え5.5以下   ±0.40
50越え100以下 4.0越え5.5以下   ±0.40
5以上15以下 5.5越え7以下   -
15越え25以下 5.5越え7以下   ±0.45
25越え50以下 5.5越え7以下   ±0.45
50越え100以下 5.5越え7以下   ±0.45
5以上15以下 7越え10以下      -
15越え25以下 7越え10以下      -
25越え50以下 7越え10以下      ±8%
50越え100以下 7越え10以下      ±8%


よろしくお願い致します。

A 回答 (9件)

No.1です。


ちょっと粗っぽいですが、簡潔な関数で
公差を検索できる表をサンプルで作って
みました。

添付の画面で、J3のセルに
=IFERROR(INDEX(C3:H6,MATCH(J2,B3:B6,1),MATCH(K2,C2:H2,1)),"該当なし")
で検索をすると、公差が表示されます。

サンプルではデータを全部仕込んで
いないのと、
以上、以下、超えの考慮をしていない
ため、境目の値で誤作動するかも
しれません。
そこは行列のデータを(小数点以下の値)
をいじるか、IF文で場合分けすることで
補正できると思います。

いかがでしょうか?
「エクセル 表の中から該当する数値を探す方」の回答画像8
    • good
    • 0
この回答へのお礼

ありがとうございます。
さっそく使用してみます。

お礼日時:2025/03/18 15:29

No.8様



素晴らしい。完璧じゃないですか。

エクセルあまり使っていなかったけれど、勉強になりました。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2025/03/18 15:34

No.6です。



多くのグログラム言語には、階段関数(step function)というのがあって、区切りの値を決めれば、1,2,3・・・と値が増加する階段状の関数を定義することができます。

それだと、簡単な記述で、行番号、列番号が決まるので、めちゃくちゃ簡単なんですが、エクセルのマクロの言語であるVBに階段関数があれば、IF文など使わずに、値の代入だけで行番号、列番号を返り値にできますね。
    • good
    • 0
この回答へのお礼

こんな質問にずっとあたたかく向き合って頂き、
本当にありがとうございます。

お礼日時:2025/03/18 13:07

No.5です。



No.5の一番下の表を元に(参照して)、任意の入力に対する公差の値を出力するのであれば、やはり、

外径下限、外径上限、肉厚下限、肉厚上限、公差(±値)

というデータに作り変える必要があります。
不等号を含む論理式を作るために、上下限の数値が必要となるのです。

そのうえで、クロス表のセルの番地を特定して、その値を返すという作業になります。

作業そのものは至って簡単ですが、エクセル関数ではなくマクロで作ることになります。

エクセルのIF関数で作れないこともないですが、最大10層もネストするIF文になってしまいます。

マクロならば、条件式がTRUEなら上書き、FALSEなら前回値を引き継ぎ、のような行番号を決める条件式を、ネストせずに書けます。
    • good
    • 0
この回答へのお礼

マクロを使ったことがなくて・・・。
地道に表を作成するところからやってみようと思います。
色々と考えてくださりありがとうございます。

お礼日時:2025/03/18 13:05

No.4の表を作った者です。



これはExcelではlookup関数とか使ってやる、かなり大事の作業になりますよ。たぶん(私はやったことない)。

私はR使いだから、次のようなスクリプトで作りました。
データ整形に手間取り20分くらい掛かりましたが、あとはものの5分で書けます。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

df <- data.frame(matrix(c(
"5以上15以下", "0.30以上0.40以下", "±0.06",
"15越え25以下", "0.30以上0.40以下", "±0.07",
"25越え50以下", "0.30以上0.40以下", "-",
"50越え100以下", "0.30以上0.40以下", "-",
"5以上15以下", "0.40越え0.60以下", "±0.07",
"15越え25以下", "0.40越え0.60以下", "±0.08",
"25越え50以下", "0.40越え0.60以下", "±0.09",
"50越え100以下", "0.40越え0.60以下", "-",
"5以上15以下", "0.60越え0.80以下", "±0.10",
"15越え25以下", "0.60越え0.80以下", "±0.10",
"25越え50以下", "0.60越え0.80以下", "±0.11",
"50越え100以下", "0.60越え0.80以下", "±0.15",
"5以上15以下", "0.80越え1.4以下", "±0.13",
"15越え25以下", "0.80越え1.4以下", "±0.15",
"25越え50以下", "0.80越え1.4以下", "±0.15",
"50越え100以下", "0.80越え1.4以下", "±0.18",
"5以上15以下", "1.4越え2.0以下", "±0.15",
"15越え25以下", "1.4越え2.0以下", "±0.18",
"25越え50以下", "1.4越え2.0以下", "±0.18",
"50越え100以下", "1.4越え2.0以下", "±0.22",
"5以上15以下", "2.0越え3.0以下", "±0.18",
"15越え25以下", "2.0越え3.0以下", "±0.20",
"25越え50以下", "2.0越え3.0以下", "±0.20",
"50越え100以下", "2.0越え3.0以下", "±0.25",
"5以上15以下", "3.0越え4.0以下", "-",
"15越え25以下", "3.0越え4.0以下", "±0.30",
"25越え50以下", "3.0越え4.0以下", "±0.30",
"50越え100以下", "3.0越え4.0以下", "±0.30",
"5以上15以下", "4.0越え5.5以下", "-",
"15越え25以下", "4.0越え5.5以下", "±0.40",
"25越え50以下", "4.0越え5.5以下", "±0.40",
"50越え100以下", "4.0越え5.5以下", "±0.40",
"5以上15以下", "5.5越え7以下", "-",
"15越え25以下", "5.5越え7以下", "±0.45",
"25越え50以下", "5.5越え7以下", "±0.45",
"50越え100以下", "5.5越え7以下", "±0.45",
"5以上15以下", "7越え10以下", "-",
"15越え25以下", "7越え10以下", "-",
"25越え50以下", "7越え10以下", "±8%",
"50越え100以下", "7越え10以下", "±8%"),
ncol = 3, byrow = T))

colnames(df) = c("x", "y", "z")

x <- unique(df$x)
y <- unique(df$y)

z <- NULL
n <- 1

for(i in 1:length(x)){
for(j in 1:length(y)){

z <- append(z, df[df$x == x[i] & df$y == y[j], 3])

}}

result.mat <- matrix(z, ncol = 4)

colnames(result.mat) <- x
rownames(result.mat) <- y

result.mat


__________5以上15以下_15越え25以下_25越え50以下_50越え100以下
0.30以上0.40以下_"±0.06"____"±0.07"_____"-"__________"-"
0.40越え0.60以下_"±0.07"____"±0.08"_____"±0.09"_____"-"
0.60越え0.80以下_"±0.10"____"±0.10"_____"±0.11"_____"±0.15"
0.80越え1.4以下__"±0.13"____"±0.15"_____"±0.15"_____"±0.18"
1.4越え2.0以下___"±0.15"____"±0.18"_____"±0.18"_____"±0.22"
2.0越え3.0以下___"±0.18"____"±0.20"_____"±0.20"_____"±0.25"
3.0越え4.0以下___"-"_________"±0.30"_____"±0.30"_____"±0.30"
4.0越え5.5以下___"-"_________"±0.40"_____"±0.40"_____"±0.40"
5.5越え7以下_____"-"_________"±0.45"_____"±0.45"_____"±0.45"
7越え10以下______"-"_________"-"__________"±8%"_______"±8%

等幅フォントで見るときれいです。
    • good
    • 0
この回答へのお礼

時間を掛けて考えてくださりありがとうございます。
スプリクトから勉強して挑戦してみます。

お礼日時:2025/03/18 13:01

No.2です。



No.1様が書かれている回答を読んで、真意が分かりました。

もしかして、ご質問の真意は、この表を基準にして、任意の数値を入れたとき、公差を表示できるように、表を組みたいということですか?

以下の感じですかね(ブラウザを広くして見て下さい)。

_________________5以上15以下_15越え25以下_25越え50以下_50越え100以下
0.30以上0.40以下_"±0.06"____"±0.07"_____"-"__________"-"__________
0.40越え0.60以下_"±0.07"____"±0.08"_____"±0.09"_____"-"__________
0.60越え0.80以下_"±0.10"____"±0.10"_____"±0.11"_____"±0.15"_____
0.80越え1.4以下__"±0.13"____"±0.15"_____"±0.15"_____"±0.18"_____
1.4越え2.0以下___"±0.15"____"±0.18"_____"±0.18"_____"±0.22"_____
2.0越え3.0以下___"±0.18"____"±0.20"_____"±0.20"_____"±0.25"_____
3.0越え4.0以下___"-"_________"±0.30"_____"±0.30"_____"±0.30"_____
4.0越え5.5以下___"-"_________"±0.40"_____"±0.40"_____"±0.40"_____
5.5越え7以下_____"-"_________"±0.45"_____"±0.45"_____"±0.45"_____
7越え10以下______"-"_________"-"__________"±8%"_______"±8%
    • good
    • 0
この回答へのお礼

ありがとうございます。
表をもとに任意の数値を入れると公差がでるようにしたいです。
(表の中にある合致する公差を探したい)
説明不足ですみません。

お礼日時:2025/03/18 12:59

No.2です。



この手の表を作る人って、分析センスが無いというか、データの利用を全く考えていない系の人ですよね。役所関係に多いです。

外径下限、外径上限、肉厚下限、肉厚上限、公差(±値)
とかの列名にして、各セルに数値だけ入れるような表を、なぜ作れないのだろうか。

中高校で「情報」いう科目を教えるようになったらしいですが、こういうリテラシーを養うよう指導して欲しいと思います。

でなきゃ、ご質問者のように困る人が出て来てしまいます。

公差が数値だけなら、ソートすれば一瞬で終わりなのに・・・。
    • good
    • 1
この回答へのお礼

コメントありがとうございます。

この表記は日本の規格に載っている表なんです。

表を載せて質問したかったのですが、わたしの力不足で載せることができなくて、このような表記となってしまいました。

お礼日時:2025/03/17 16:00

まず最初に、「±」の符号がありますね。

もし、他の表からエクセルにコピーしたデータなら、これがあるせいで、数値ではなく、文字列として認識されますよ。

このとき、論理式はダブルコーテーション付きで書かなければなりません。また、数値ではないので不等号の式が使えません。

さらに、公差の列に絶対値と百分率が混在していますが、それも含めて処理する必要があるのですか?

だとすると、処理方法は限られてきます。

それと、「-」という文字列があるのも問題です。そういう文字列は、あらかじめ検索→置換によって空白セルにしておいた方が良いでしょう。
そのまま放置しても良い場合もありますが・・・。

さて、

関数であれば、IF(論理式,真の場合,偽の場合)を使います。

私だったら、ホーム→スタイル→条件付き書式でセルに着色するか、
挿入→ピボットテーブルで、行を選択できるようにします。

ピボットテーブルなら、文字列であっても、百分率があって、「ー」があっても問題ないです。
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2025/03/17 15:52

データを見る限り、マトリックス表に


置換えるだけで簡単になると思います。

外径4パターン
肉厚10パターン
のマトリックス表に直し、
妙な日本語を取払っちゃえば、
正確で見やすく柔軟性のある
検索ができると思いますが。

どうなんでしょう?
    • good
    • 1
この回答へのお礼

表があるのですが、わたしの力不足で載せることができなくて
このようなわかりにくい表記となってしまいました。

表を見直すまで頭が回りませんでした。
やってみようと思います。

お礼日時:2025/03/17 15:51

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A