- ベストアンサー
データの条件により数値を与える。
エクセルで Xが1~3で、Yが1~4ならばA。 Xが1~3で、Yが4~8ならばB。 Xが4~6で、Yが4~8ならばC。 のようXとYの条件で与える数値を設定したいのですが、 いい方法はないでしょうか。 また、XおよびYの数値設定をなるべく細かく出来ればと考えています。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
仮にA列にX、B列にYが入っているとして A B C D E F G 1 1 1 0 5 8 2 3 5 0 A B C 3 4 5 4 A C C 4 6 8 7 A C D とD1~G4に表を準備しておいて C列に =INDEX(E$2:H$4,MATCH(A1,D$2:D$4),MATCH(B1,E$1:H$1)) と入れて下までコピィ ご希望の値が出るような表を準備できるような気がします。 関数を説明しますと INDEXで指定した範囲 E2~G4 MATCH(A1,D$2:D$4)でA列の値がD2~D4で何番目(等しい値がない場合は、未満の値) MATCH(B1,E$1:H$1)でB列の値がE1~H1で何列目 かを探して、その行列番号にある値を表示という式です。 応用してみてください。
その他の回答 (4)
- mt2008
- ベストアンサー率52% (885/1701)
数値設定を細かくするなら別に表を作った方が良いでしょう。 A1にXの値、B1にYの値が入っているとして、シートの10行目以降で条件の表を作ります。 B10からのB列にXの最小値、C10からのC列にXの最大値。同様にD・E列にYの最小値・最大値。そしてF列に条件一致時に表示したい数値を入れます。 A列は、後から使いますからあけて置いてください。 1 3 1 4 A 1 3 5 8 B 4 6 5 8 C 4 6 1 4 D の様になります。 次にA10に↓の式を入れて表の下までコピーします =(B10<=$A$1)*(C10>=$A$1)*(D10<=$B$1)*(E10>=$B$1)*1 これで。条件に一致すると1、一致しないと0が表示されます。 あとは、表示したいセルに↓をいれ、表のA列に1が立っている行の表示したい値を表示します。 =VLOOKUP(1,A10:F13,6,FALSE) 表を下に広げればいくらでも設定が出来ます。
- pascal3141
- ベストアンサー率36% (99/269)
Z=10X+Yを作り、 z>=4 なら C、z<4 で (zの小数点以下)>=4 ならB、それ以外 Aとすればいいでしょう。if文と小数点以下数字を取り出す関数でできます。(Y=4の所でB,Cが重なるのは他の方のご指摘通りで範囲を直す必要があります。)
- 1224jmm
- ベストアンサー率0% (0/6)
質問の内容が全て正しいとするとYの4に矛盾が出てくると思うのですが、 上記を踏まえず条件どおりの数式にすると、 1.A1にXの値を入力する箇所 2.B1にYの値を入力する箇所とすると任意のセルに =IF(AND(1<=A1,A1<=3,1<=B1,B1<=4),"A",IF(AND(1<=A1,A1<=3,4<=B1,B1<=8),"B",IF(AND(4<=A1,A1<=6,4<=B1,B1<=8),"C","数値確認"))) と式を入力すれば出来ると思います。
補足
回答ありがとうございます。 上記の式であまり多くない数に分類する場合できるかと思いますが、 Xが1~3で、Yが1~4ならばA。 Xが1~3で、Yが5~8ならばB。 Xが4~6で、Yが5~8ならばC。 Xが4~6で、Yが1~4ならばD。 ・ ・ ・ Xが57~60、Yが56~60ならば○○。 という感じでXのMAXを60、YのMAXを60として、 Xを3ずつ、Yを4ずつに分割して、それぞれのマスに何らかの値もしくは記号をつけたいと考えています。 質問の内容が、簡易に書きすぎていまして申し訳ありません。 上記のように条件を分けることは出来るでしょうか?
- ore-summer
- ベストアンサー率29% (133/454)
その前に Yが4ならA,Bとの区別が付きませんが。
補足
すいません。 Xが1~3で、Yが1~4ならばA。 Xが1~3で、Yが4~8ならばB。 Xが4~6で、Yが4~8ならばC。 のYを5~8の間違いです。
お礼
ありがとうございました。 やろうとしていたことが出来ました。