アプリ版:「スタンプのみでお礼する」機能のリリースについて

A列に0~30の数値があります。
B列に5種類ぐらいの規則を作って値を表示させたい。

A列の数値が0~3の場合は0を表示
A列の数値が4~8の場合は2を表示
A列の数値が9~15の場合は3を表示
A列の数値が16~22の場合は4を表示
A列の数値が23~30の場合は5を表示させたいです。

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

A 回答 (4件)

ご質問者がお示しになった、A列に0~30の数値があって、


A列の数値が0~3の場合は0を表示
A列の数値が4~8の場合は2を表示
・・・・・・・・・
というような条件の示し方は好ましくありません。

何故なら、0~30には整数以外も含まれるからです。ご質問の表現だと3と4の間には数値がないかのような表現になっています。しかし、「3を超えて4未満」という範囲に整数は存在しませんが、整数以外の数値は無数に存在します。ですから仮にA列に「3.5」という値があったらどうするのかという問題が生じてしまいます。

No.1さんの回答の数式
=IF(A1<=3,0,IF(A1<=8,2,IF(A1<=15,3,IF(A1<=22,4,IF(A1<=30,5,"")))))・・・①
①では、3.5を「4~8の場合」と判断し、
No.2さんの回答の数式およびNo.3さんの回答の数式
=Vlookup(A1,閾値と表示の表、2)・・・②
=IF(A1>30,NA(),VLOOKUP(A1,{0,1;4,2;9,3;16,4;23,5},2))・・・③
②③では、3.5を「0~3の場合」と判断することになります。

このよう回答者の判断に委ねるような表現になっており、混乱を招くだけなので「好ましくない」と申し上げている訳です。
このような混乱を避けるには、
①が正しいとすると
A列の数値が0を超え3以下の場合は0を表示
A列の数値が3を超え8以下の場合は2を表示
A列の数値が8を超え15以下の場合は3を表示
・・・・・・・・
のような表現にすべきですし、
②③が正しいとすると、
A列の数値が0以上4未満の場合は0を表示
A列の数値が4以上9未満の場合は2を表示
A列の数値が9以上15未満の場合は3を表示
・・・・・・・・
のような表現にすべきです。

仮に、「A列には0以上の整数しか入れない」というのであれば、「3.5」という数値はあってはならない訳ですから、No.3さんの回答の注釈にある「※ 0より小さかったり、30より大きな値の場合は、#N/A となります」という説明と同様に何らかのエラーを返する必要があるということになります。

これを踏まえて、ご質問者の条件に忠実に数式を作るとすると、ご質問者のお示しになった条件の前に「(a)A列の数値が0以上30以下の整数であって」という前提がつくことになります。
その条件で数式を作るとして、数値でないもの、また(a)の条件から外れる場合は「空白」を返すものとします。この場合B1セルに、

=IFS(INT(A1)<>A1,"",A1>30,"",A1>22,5,A1>15,4,A1>8,3,A1>3,2,A1>=0,0,TRUE,"")・・・④

を入れて下方向へコピーすればよいと思います。

整数という条件は無視して②③と同じでよい場合は、B1セルに

=IFS(A1>30,"",A1>=23,5,A1>=16,4,A1>=9,3,A1>=4,2,A1>=0,0,TRUE,"") ・・・⑤

を入れて下方向へコピーすればよいことになります。

④⑤はIFを繰り返す数式よりはスマートだと思いますが③の数式の方がさらにスマートだと思います。ただし③の数式そのままではご質問の条件に合致しない気がします。③をご質問の条件に合致させるには

=IF(A1>30,NA(),VLOOKUP(A1,{0,0;4,2;9,3;16,4;23,5},2))・・・⑥

のように修正する必要があると思います。
    • good
    • 0

こんにちは



スマートかどうかはわかりませんけれど・・

 =IF(A1>30,NA(),VLOOKUP(A1,{0,1;4,2;9,3;16,4;23,5},2))
とかではいかが?

※ 0より小さかったり、30より大きな値の場合は、#N/A となります。
    • good
    • 0

閾値と表示、と言う別表を作ってください。


閾値-表示は、イカになります。
0-0,4-2,9-3,16-4,23-5,31-over,999-over

B列の関数は以下になります。
B1=Vlookup(A1,閾値と表示の表、2)

例えば、A1=15では、
「閾値と表示の表」の16の前段の「3」が表示されます。

もう一つの方法
> A列の数値が0~3の場合は0を表示
これを「1を表示」に変更すれば、B列の関数は以下になります。
B1
=(A1>0)
+(A1>4)
+(A1>9)
+(A1>16)
+(A1>23)
ただ、Aが30超の時の判断はありません。
    • good
    • 0

B列の1行目から順に以下の式を入力してください。



1. =IF(A1<=3, 0, IF(A1<=8, 2, IF(A1<=15, 3, IF(A1<=22, 4, IF(A1<=30, 5, “”)))))
    • good
    • 0

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

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


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