
すごく難しくて困ってます。
以下の表の中から該当する公差を探す関数を知りたいのですが
例:セルに 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%
よろしくお願い致します。
No.8ベストアンサー
- 回答日時:
No.1です。
ちょっと粗っぽいですが、簡潔な関数で
公差を検索できる表をサンプルで作って
みました。
添付の画面で、J3のセルに
=IFERROR(INDEX(C3:H6,MATCH(J2,B3:B6,1),MATCH(K2,C2:H2,1)),"該当なし")
で検索をすると、公差が表示されます。
サンプルではデータを全部仕込んで
いないのと、
以上、以下、超えの考慮をしていない
ため、境目の値で誤作動するかも
しれません。
そこは行列のデータを(小数点以下の値)
をいじるか、IF文で場合分けすることで
補正できると思います。
いかがでしょうか?

No.6
- 回答日時:
No.5です。
No.5の一番下の表を元に(参照して)、任意の入力に対する公差の値を出力するのであれば、やはり、
外径下限、外径上限、肉厚下限、肉厚上限、公差(±値)
というデータに作り変える必要があります。
不等号を含む論理式を作るために、上下限の数値が必要となるのです。
そのうえで、クロス表のセルの番地を特定して、その値を返すという作業になります。
作業そのものは至って簡単ですが、エクセル関数ではなくマクロで作ることになります。
エクセルのIF関数で作れないこともないですが、最大10層もネストするIF文になってしまいます。
マクロならば、条件式がTRUEなら上書き、FALSEなら前回値を引き継ぎ、のような行番号を決める条件式を、ネストせずに書けます。
マクロを使ったことがなくて・・・。
地道に表を作成するところからやってみようと思います。
色々と考えてくださりありがとうございます。
No.5
- 回答日時:
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%
等幅フォントで見るときれいです。
No.4
- 回答日時:
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%
ありがとうございます。
表をもとに任意の数値を入れると公差がでるようにしたいです。
(表の中にある合致する公差を探したい)
説明不足ですみません。
No.3
- 回答日時:
No.2です。
この手の表を作る人って、分析センスが無いというか、データの利用を全く考えていない系の人ですよね。役所関係に多いです。
外径下限、外径上限、肉厚下限、肉厚上限、公差(±値)
とかの列名にして、各セルに数値だけ入れるような表を、なぜ作れないのだろうか。
中高校で「情報」いう科目を教えるようになったらしいですが、こういうリテラシーを養うよう指導して欲しいと思います。
でなきゃ、ご質問者のように困る人が出て来てしまいます。
公差が数値だけなら、ソートすれば一瞬で終わりなのに・・・。
コメントありがとうございます。
この表記は日本の規格に載っている表なんです。
表を載せて質問したかったのですが、わたしの力不足で載せることができなくて、このような表記となってしまいました。
No.2
- 回答日時:
まず最初に、「±」の符号がありますね。
もし、他の表からエクセルにコピーしたデータなら、これがあるせいで、数値ではなく、文字列として認識されますよ。このとき、論理式はダブルコーテーション付きで書かなければなりません。また、数値ではないので不等号の式が使えません。
さらに、公差の列に絶対値と百分率が混在していますが、それも含めて処理する必要があるのですか?
だとすると、処理方法は限られてきます。
それと、「-」という文字列があるのも問題です。そういう文字列は、あらかじめ検索→置換によって空白セルにしておいた方が良いでしょう。
そのまま放置しても良い場合もありますが・・・。
さて、
関数であれば、IF(論理式,真の場合,偽の場合)を使います。
私だったら、ホーム→スタイル→条件付き書式でセルに着色するか、
挿入→ピボットテーブルで、行を選択できるようにします。
ピボットテーブルなら、文字列であっても、百分率があって、「ー」があっても問題ないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
割引計算
計算機科学
-
世界初の爆道計算用に作られたコンピュータ性能が低くく計算精度も低いのになぜ弾道計算に使われましたか?
計算機科学
-
この180➗204の計算の仕方教えてください。 答えが電卓だと0.88らしいですが どうやって計算す
数学
-
-
4
この問題、解き方は理解したのですが、なんか何がしたいのかよく分かりません。解き方は良いので解法を要約
数学
-
5
エクセル 表の中から当てはまる数値を探す方法を教えてください
計算機科学
-
6
慣性力はなぜ実在しない力と言われているのでしょうか。電車が急に加速するとき私たちは後ろがわによろけま
物理学
-
7
この増減表を求める問題で微分係数0になる点を求めるというのは分かりますが、でもそれだとポイントの条件
数学
-
8
60進法?について 最近、未経験から事務のアルバイトを始めました。 労務や総務系の事務なので従業員の
数学
-
9
√1って|1|もしくは±1ですよね?
数学
-
10
中高で数学をやる意義は? と聞かれたらみなさんなんて答えます?
数学
-
11
半径1の円の面積がπになることを、積分を用いて示せという問題について質問です。この円はy=√1-x^
数学
-
12
カスハラのカス
日本語
-
13
pythonについて(初心者です)
その他(プログラミング・Web制作)
-
14
このような電子チェス盤などそういう類の物の開発をしたいとなると、工学部のなんの学科に進めば良いのでし
工学
-
15
瞼の手術を行って、この眼瞼のカーブが左右対称であることを数式を使って証明したいです。 どなたかお知恵
数学
-
16
SPI 食塩水の等量交換 完全文系です。食塩水の問題は昔から苦手でした。 何グラム何パーセントの食塩
数学
-
17
全体100人のうちリンゴ派90人みかん派80いちご派50人のときすべての派閥に入ってる人として考えら
数学
-
18
なぜ正面にぶつかったのに写真のように散らばっていくのでしょうか。正面にぶつかったら正面に進みそうな気
物理学
-
19
モンティホール問題について 問題は「最初にドアを一つ選ぶか二つ選ぶか決めてください」とほぼ一緒で、後
数学
-
20
この回答あってる
数学
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
この計算方法を教えて頂きたい...
-
人間の思考の3分の1をAIに委ね...
-
大谷の三振数と三振率は
-
急ぎ!1分程度ってどのくらいで...
-
真空管アンプの NFB などについて
-
sin50°×tan140°+sin40°の解き...
-
誰も解読できない暗号(符号)を...
-
遺伝子操作で天才を作り出す事...
-
数Bの数列で教えてほしい問題が...
-
計算ソフトでの計算精度について
-
数学 因数分解の質問をさせて頂...
-
変動費予算額の求め方を教えて...
-
X二乗=1-2y二乗の範囲が1/√2に...
-
誤差についてです 誤差の逐次伝...
-
aを求めたいです ここからの解...
-
①9:45 〜 17:10 休憩60分 実...
-
上流工程のその上のそもそもス...
-
関数電卓で求めた計算が何の二...
-
83 a=0、2、≠0、2、と場合分け...
-
機械言語はどうやって決めてる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
急ぎ!1分程度ってどのくらいで...
-
aを求めたいです ここからの解...
-
この計算方法を教えて頂きたい...
-
形式言語 チョムスキー標準形
-
270万円の6対4の計算式を教え...
-
関数電卓で求めた計算が何の二...
-
キログラムからトンの変換 1.15...
-
4を4つ使って1〜100を作って欲...
-
X/3.5=X/7.5+20 のxを求める...
-
四則計算ってなんですか? 数学...
-
有効数字の計算法について、(15...
-
熱量と抵抗の関係性
-
素因数分解、因数分解
-
1キログラムって重さでいうとど...
-
100問の問題を120分で解かなけ...
-
6ビット(符号含む)の二進数
-
割引計算
-
この問題の解き方教えてくださ...
-
〔2x+3y〕〔2x -5y〕の解き方...
-
X-R管理で使用する係数について...
おすすめ情報