[[20060606134815]] 『データの抽出と置換標記』(sk) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『データの抽出と置換標記』(sk)

 表でセルC6:AI6,C21:AE21には「機械番号」、C7:AI7,C22:AE22には「不良率」
 C8:AI8,C23:AE2には「生産効率」が記録されている。
 セルA2には「不良率の目標値」,セルA3には「生産効率」の目標値が書かれている。

 セルB20からF20に不良率が目標値を超えたもののうち、大きいもの順に「機械番号」を表示し
 セルB21からF21に不良率が目標値を超えたもののうち、大きいもの順に「不良率」を表示したい。
 生産効率についても目標値を下回ったものを同じように表示したいと考えています。
 ご教授お願いいたします。 

 (sk)さんが上記作業をエクセルにて行わせようとしている時
 どの時点で作業が止まってしまっているのかを教えてください。

 たとえば、構想はあるが全くどうやっていいのか分からない。
 たとえば、この関数を使えばいいかな・・位はわかる。
 たとえば、実際作ってみたけどどうも思うようにいかない。

 あと、レイアウトを変えることは可能ですか?

 (HANA)

(HANA)さん ご確認いただき有難うございます。
 検索範囲を指定し、LargeやSmall関数で順位をつけて抽出すること程度理解。
 特定セルの値(目標値)との照合やその値と直接無関係の機械番号の表示等が解りません。
 レイアウト変更に付いては、既に運用している様式で、且つスペース的に困難と認識しています。
 機械台数が多く、どうしても同じ内容を2段に分割して表示必要です。
 努力の少ない段階のお願いかもしれませんが宜しくお願いします。

 つまり問題は
 『1.特定セルの値(目標値)との照合
  2.その値と直接無関係の機械番号の表示・・等』
 って事ですね。

 たとえば、作業行を作ってIF関数で照合させてみてはどうですか?
 1 不良率と目標値を比べ、超えたものの不良率を作業行セルに表示。
    例:IF(C7>$A$2,C7,"")
   その後、その作業行に関してLARGE関数を使い順位を付ける。
   生産効率に関しても同じ考え方で。

 2 機械番号の表示は、HLOOKUP関数が使えるかもしれません。
   (順位が同じ物が複数存在したら問題ですが)
   目的の順位から縦方向に指定行移動したセルの内容を表示できます。

 レイアウトの変更は困難なので現在そのようなレイアウトを
 使っているのだとは思いますが、たとえば
 計算させる時は、エクセルに指示の出しやすいレイアウトを使い
 表示させるときは、見やすいレイアウトにして表示させる
 なんて手もつかえるかもしれませんよ。

 (HANA)

 そう言えば、IF関数で順位を表示するかしないかを分ければ
 作業行が1行ですむような気がします。
    例:IF(C7>$A$2,【順位を出す関数】,"")

 (HANA)


(HANA)さん

 C7>$A$2の意味がよく解らず、不良率を表示するセルに B21>$A$2とすると、循環参照のエラー表示発生。

 この為、作業セルを作り、そこにsmall、Large関数で表示させ、所定の位置には作業セルの値をIF文で目標と照合し、表示させるようにしました。
 機械番号の表示の仕方がどうしてもわかりません。具体的に教えていただきたいのですが?

 教えていただきたいことの整理再記入。
 表でセルC6:AI6,C21:AE21には「機械番号」、C7:AI7,C22:AE22には「不良率」が記録されている。
 ・セルB21からF21に不良率が目標値を超えたもののうち、大きいもの順に「不良率」を表示できました。
  (B30からF30にLarge関数で表示し、それをIFで目標値と照合しB21からF21に表示。)
 ・セルB20からF20に、セルB21からF21に対応する「機械番号」を表示したい。B20の具体的な数式を教えてください。


 ごめんなさい、レイアウトがよくわかりません。
 C21からAE21までは機械番号が入っているのに
 B21からF21に不良率が表示されているのなら
 重なっているC21からF21までの機械番号はどうなったのですか?

 あと、すごく不親切な書き方をしてしまっていたようです。
 私が想定していたことは順位を表すRANK関数を使って
	A	     B	C	D	E	F	G	H	I	J	K
1											
2	0.4										
3	↑不良率の目標値										
4											
5		★作業行→			         5		4	3	1	2
6		機械番号→         あ	い	う	え	お	か	き	く	け
7		不良率→	         0.1	0.4	0.3	0.5	0.2	0.6	0.7	0.9	0.8
8											
20											
21	順位	     1	2	3	4	5			 		
22	機械番号	     く	け	き	か	え					
23	不良率	     0.9	0.8	0.7	0.6	0.5					
 C5=IF(C7>$A$2,RANK(C7,$C$7:$K$7,),"") ★F5までコピー
       ~~~~~~~ここが最初に書いたIF関数の条件です。
 B22=HLOOKUP(B21,$C$5:$K$7,2,FALSE) ★F22までコピー
 B23=HLOOKUP(B21,$C$5:$K$7,3,FALSE) ★F23までコピー

 だったのですが、二つの表(6行目から始まる表と21行目から始まる表)
 に通しでランクをつけてHLOOKUPで引っ張ってくるのは不向きな気がします。

 そこでLARGE関数を素直に用いて

	A	B	C	D	E	F	G
1							
2	0.4						
3	↑不良率の目標値						
4							
5							
6	機械番号→	あ	い	う	え	お
7	不良率→		0.1	0.4	0.3	0.5	0.2
8							
9							
10	機械番号→	か	き	く	け	こ
11	不良率→		0.2	0.6	0.7	0.9	0.8
12							
20							
21	順位	1	2	3	4	5	
22	機械番号	け	こ	く	き	え	
23	不良率	0.9	0.8	0.7	0.6	0.5	

 B22=IF(ISERROR(INDEX($C$6:$G$6,,MATCH(B23,$C$7:$G$7,FALSE))),
                INDEX($C$10:$G$10,,MATCH(B23,$C$11:$G$11,FALSE)),
                INDEX($C$6:$G$6,,MATCH(B23,$C$7:$G$7,FALSE))) ★F22までコピー
 B23=IF(LARGE($C$6:$G$11,B21)>$A$2,LARGE($C$6:$G$11,B21),"") ★F23までコピー
        ~~~~~~~~~~~~~~~~~~~~~~~~~~LARGE関数を使うと条件がこうなります。
                                  こうすると、作業セルがいらなくなります。
        B23用の式は現在(sk)さんがB21から表示させるようにした不良率と
        同じ結果を表す式になっていると思います。
とすると、一応機械番号を引っ張ってこれます。

 問題は、不良率が同じ物が2つ以上あった場合最初にでて来た物しか
 表示されないってことですかね・・・・。
 不良率が同じ物が2つ以上あったらどうなるんですか?
 それでも5つだけ表示されればいいのか、あくまでも5位までが必要なのか。
 (今はどちらにも対応してませんが)

 追記:エラー処理もしてません。
       なんだか勝手に上位5位だと思ってましたが、全て表示なんですね。
       ・・・・課題が増えたきがするなぁ。

 (HANA)

 ちなみに、「不良率の目標値」の有効桁数はいくらですか?
 そして、機械は最大何台ですか?

 実際のデータはC列からAI列までの様ですが
 サンプルとして適当な範囲のデータを載せていただけませんか?
 (A1から適当行の適当列まで)
 それっぽい数値と出鱈目な機械番号が入った物でかまいませんので。

 (HANA)

(HANA)さん
 不正確なお願いにも拘らず、膨大な記入をしていただき大変有難うございます。
 上記確認事項についてまず記入いたします。
 不良率の目標値は現在のところ小数点以下は有りません。今後有っても1桁です。
 機械台数は62台です。

 機械番号:A01	A02	A03	A04	A05	A06	A07	A08	A09	A10	A11	A12	A13	A14	A15	A16	A17	A18	A19	A20	A21	A22	A23	A24	A25	B01	B02	B03	B04	B05	B06	B07	B08
 不良率 :C13:AI13(現在作成中の表は数値が入っていません。)

 機械番号:B09	B10	B11	B12	B13	B14	B15	B23	B24	B25	B26	B27	B28	B29	B16	B17	B18	B19	B20	B21	B22	B30	B31	B32	B33	B34	B35	B36	B37
 不良率 :C28:AE28(現在作成中の表は数値が入っていません。)

 私は表の横に=LARGE((C13:AI13,C28:AE28),1)を1から5まで(AL6:AP6)表示し、
 実際の表示欄(R47:V47)には=IF(AL6>$M$4,AL6,"")をAP6まで作成しています。
 M4に目標値があります。
 その下の欄(R48:V48)にそれに対応する機械番号を表示しようとしています。


 とりあえず
[[20060609170140]]『hlookup関数』(sk)
 こちらで解決と言うことで宜しいでしょうか?

 二つに表が別れている状態で判定をだし、結果を計算して表示させるよりは
 表を一つにするのが一番だとおもいます。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.