
EXCELの関数で困ってます。
A,B,E,Rという4つの数字があって
数値の大小によって条件分けをしたいのですが、
ある程度規則性のある数値が入りますので6パターンしか出てきません。
(1)E<R≦A,B
(2)E<A<R≦B
(3)E<A,B<R
(4)A,B<E<R
(5)A<E<R≦B
(6)A<E<B<R
(1)の式で、AND(E<R<=A,E<R<=)としても
小なり(<)や小なりコール(≦)は一つの式に複数入れられないのか
数値はあっていてもFALSEになってしまいます。
((E<R)≦A)などとかっこを使ってひとつずつ判断するのかなと
思いましたがそれもダメでした。
関数で大なりや大なりイコールを複数使用するにはどうすればいいのでしょうか?
ひとつの式に複数小なり記号を入れられるとすると
単純にANDで2つの条件を入れようかと思いますが
他にスマートな入力方法はありますか?
はじめはAND(RANK(E,範囲,0)=1,OR(RANK(A,範囲,0)=4,RANK(B,範囲,0)=4))
もしくはAND(RANK(E,範囲,0)=1,RANK(R,範囲,0)=2)などと入れてましたが
単純に大なり小なりで入れる方が短かそうだったので…。
他にスマートな入力方法があれば教えて頂けると幸いです。
No.6ベストアンサー
- 回答日時:
No.2 さんが条件をまとめていますので
(1)=(_E<_R)*(_R<=_A)*(_R<=_B)
(2)=(_E<_A)*(_A<_R)*(_R<=_B)
(3)=(_E<_A)*(_E<_B)*(_A<_R)*(_B<_R)
(4)=(_A<_E)*(_B<_E)*(_E<_R)
(5)=(_A<_E)*(_E<_R)*(_R<=_B)
(6)=(_A<_E)*(_E<_B)*(_B<_R)
条件を整理すると
(1)~(3)までを見ると 共通しているのは (_E<_A)
(1) (_R<=_A)
(2)~(3) (_R>_A)
(2) (_R<=_B)
(3) (_R>_B)
(4)~(6)までを見ると 共通しているのは (_A<_E)
(4) (_B<_E)
(5)~(6) (_E<_B)
(5) (_R<=_B)
(6) (_R>_B)
=IF(E<A,IF(R<=A,1,IF(R<=B,2,3)),IF(B<E,4,IF(R<=B,5,6)))
ご回答ありがとうございます。
6つのパターンと申しましたが、E<Rなど無視していい条件も含まれてるので
最初にまとめてしまえばいいんですね。
IF~の階層が深くなるとかなりしつこい式になりますけど、この式だとすっきりしててわかりやすいです。
今回はこの方法を参考にさせて頂きます。
ありがとうございました。
No.7
- 回答日時:
#5です。
補足していただいた課題の内容を十分判ったとはいえませんが、思いついたことを述べます。エクセルにはユーザー関数の作成があります
それに持ち込んで、
Function aaa(a, b, c, d)
If a > b And c > d Then
aaa = 1
ElseIf a > b And c < d Then
aaa = 2
ElseIf b >= a And c > d Then
aaa = 3
End If
End Function
のように書けば、AND、 OR とElseifの書き方で質問は処理できるのではと思いました。
上記の分類例は、説明を易しくするため、質問の内容とは関連させていませんのでご注意を。
分類コードを返しています。
例 A-Dデータ E列関数結果
A列 B列 C列 D列 E列
32531
32472
22643
E列は =aaa(A1,B1,C1,D1)のように普通の関数と同じ書き方でよい。
判別に使う場合は、=IF(aaa(A1,B1,C1,D1)=1,○,X)のようになります。
aaaの名前については既存の関数の名前以外ならよい。
a>=bも記述できる。ANDも、IfからThenまでに、2つ3つ連ねても良い。
だから質問の表現の通り、上記要領で書いていけばよい。
ーー
ただ区分けがうまく行ってないと、最初の該当行で結果を返すので、
課題解決としては混乱する。別途「2区分以上で該当が無い」よう分類分けを考える必要はある。
ーー
これを言うのも、VBAプログラムのほうが記述に自由度が有るためです。こちらVBAでも、Between(SQL文でのみ使える)は定義しないと使えませんので考えていません。
VBAといっても上記は、未経験者も類推できる簡単な記述なので、説明してみました。上記コードは、ツールーマクローVBE-挿入ー標準モジュールの画面に貼り付けるものです。
ご回答ありがとうございます。
EXCELの関数で大なり記号を複数入れるには?というのが今回の質問の趣旨でした。
下手に6パターンの条件を記載してしまったので、
"この式の書き方"を教えて下さい"という趣旨と思われたならお詫び致します。
出来ないとわかった時点で閉じればよかったのですが…。
あと、VBAは"ちょこっとかじった"位のレベルでしたが、
3年程前にVBAエキスパートという資格を取得した際に、
素人ながらではありますが結構勉強しましたので、
やりたいことを考えてVBEでコードを書いていくとかフォームを作ったりする程度なら
問題ない程度には理解してますし、imogasi様のおっしゃりたい事もわかります。
ただ、今回は職場で共有するデーターを作成してますのでマクロをつかわずに
やってみようと思ったのですが、
(開く時に何か聞かれるからコワイって方結構おられるので逆に面倒なんです(;´_`;)。
各PCのセキュリティレベルを低にするわけにもいきませんし…。)
複数大なり小なりをいれられないのにびっくりしたので質問させて頂きました。
色々とありがとうございました。
No.5
- 回答日時:
エクセルにはBetweenのような表現は出来ないから、「から」「まで」の判定は、=AND(「から」の数値より大きい,「まで}より小さい)
という表現になる。からとまでに等しい場合を含めるかどうかは、課題の状況に従う。
等号演算子をIF関数の第1引数のところへ、2つ以上入れてはならない。普通の結果と、別の意味になるようだ。
>AND(E<R<=A,E<R<=)
=IF(A1<B1<C1,"A","B")
ーー
問題の書き方だが、あまり抽象化・記号化しないほうがわかりやすい。またエクセルではセル番地で書くべきだ。定数なら定数で。
ーー
RANKの記述が有るが、具体的に、文章で表せば、どういうことがしたいのか?
ご回答ありがとうございます。
>等号演算子をIF関数の第1引数のところへ、2つ以上入れてはならない。普通の結果と、別の意味になるようだ。
やはりそうなってしまうのですね。
( )で括ると括るところによってFALSEになったりTRUEになったりはしましたが答えはあっていませんでした。
>問題の書き方だが、あまり抽象化・記号化しないほうがわかりやすい。またエクセルではセル番地で書くべきだ。定数なら定数で。
A/B/E/Rは名前定義しており、実際には_(アンダーバー)を前につけてます。
数式を表記する際は式通りに記載すべきでした、すみません。
どういうことがしたいのかについてはNo.3の方にご回答頂いた欄で補足させて頂きました。
No.3
- 回答日時:
>ある程度規則性のある数値が入りますので6パターンしか出てきません。
>(1)E<R≦A,B
>(2)E<A<R≦B
>(3)E<A,B<R
>(4)A,B<E<R
>(5)A<E<R≦B
>(6)A<E<B<R
>他にスマートな入力方法はありますか?
条件が不明です
「ある程度規則性のある数値」について式の提示ばかりでなく
説明を記載下さい
例
(1)であれば
=SMALL((A,B,E,R),2)=R
でも良いのかな
条件が不明ですので参考までに
この回答への補足
ご回答頂きありがとうございました。
図示しないと説明が難しそうだったので、はしょってしまいすみませんでした。
つたない説明でおわかり頂けるか不安ですが…各値の説明としては、
縦に細長い通路があったとして、その横幅(短辺)の中心に2つ重ねたフラフープを置き、
1つだけを進行方向(長辺)に平行移動した状態をイメージして下さい。(長辺は無限にあります)
上の玉を強く押してめりこませた雪だるまのイメージです。
最終的にその円の重なった部分の面積を出したいのですが、
A/B/E/Rの4つは変数な為、それぞれで面積を求める計算式がかわってくるので最初に振り分けをしたかったのです。
Aは横幅の左端から円の中心までの距離で、Bは右端からの距離(中心におけばもちろんA=B)。
Rは円の半径、Eは2つの円の交点から円の中心までの距離(ご指摘の通りE<Rは確定です)
A=Bとして、A+B>R*2となれば円は全て通路内(A+B)におさまりますが、小なりなら左右対称にはみ出ます。
またA+B>R*2だったとしてもAとBが極端に違えば左右どちらかだけがはみ出ます。
具体的には、条件(2)E<A<R≦BだとA側のみはみ出ますが、
E<Aなので円の交点とAのラインまでにラッパの先のような部分ができるのでそこも求めてひかなくてはいけなく、
条件(5)A<E<R≦Bだと同じくA側のみはみ出ますがA<Eなのでラッパの部分ができません。
そうやって考えていくと6パターンの式でいいという事になったので、どれにあてはまるかを関数で導きたかったのです。
面積を求める数式は(1)~(6)までのパターンで作成済みなので条件分けだけが希望です。
No.2
- 回答日時:
外しているような気もしますが、こういうことでしょうか?
(1)=(_E<_R)*(_R<=_A)*(_R<=_B)
(2)=(_E<_A)*(_A<_R)*(_R<=_B)
(3)=(_E<_A)*(_E<_B)*(_A<_R)*(_B<_R)
(4)=(_A<_E)*(_B<_E)*(_E<_R)
(5)=(_A<_E)*(_E<_R)*(_R<=_B)
(6)=(_A<_E)*(_E<_B)*(_B<_R)
これら条件(1)~(6)が複数同時に成立する事がないのなら、こんな風に書く事でどの条件が成立したかを出すことも出来ます。
=1*(_E<_R)*(_R<=_A)*(_R<=_B)+2*(_E<_A)*(_A<_R)*(_R<=_B)+3*(_E<_A)*(_E<_B)*(_A<_R)*(_B<_R)+4*(_A<_E)*(_B<_E)*(_E<_R)+5*(_A<_E)*(_E<_R)*(_R<=_B)+6*(_A<_E)*(_E<_B)*(_B<_R)
ご回答頂きありがとうございました。
最初に拝見した時は、何故"*"?とびっくりしましたが、
TRUEが1,FALSEが0であるのは知ってたのに、
条件をそれぞれかっこでくくってTRUE or FALSEを出したあと
かけて0にならなければ最終的にTRUE(1)となる…とは考えつかなかったです!
6パターン全部を一つの式に入れ込んで一発で何番にあてはまるのかまで出せると、
結果を表すためだけのセルも不要なのでのでとてもスマートですね。
mt2008さまのように柔軟な発想をもつ方をうらやましく思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 【スプレッドシート】順位のつけ方 2 2022/08/17 13:27
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Excelの関数詳しい方お願いします。 13 2023/01/18 21:11
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/09 14:54
- Excel(エクセル) エクセルの複写について 4 2022/04/10 01:02
- Visual Basic(VBA) VBAのifで 4 2023/05/16 14:21
- 高校 述語論理の基本的な質問 3 2022/04/23 10:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】並び替えの範囲が、...
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
行一括削除を早く行う、こんな...
-
基準日以前のデータを範囲を指...
-
EXCELの関数で大なり記号を複数...
-
【Excel】数式の参照範囲を可変...
-
エクセル関数について
-
エクセル VBA 行間隔を飛ばした...
-
Excelで並び替え後にア行...
-
Excelで複数列のデータを1列に...
-
EXCEL 最終行のデータを他のセ...
-
文字列を比較し、相違するフォ...
-
VBA 複数行の検索及び抽出
-
データの整理(VBA)
-
EXCELでデータ並べ替えにの時、...
-
エクセルのCOUNTIF関数について...
-
VBA 配列で型がエラーになります。
-
マクロで行の高さを設定したい
-
【Excel VBA】指定した行の最大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
オートフィルタ後のデータから...
-
急ぎ!色のついたセルを非表示...
-
EXCELで日付を比べ3か月以内の...
-
基準日以前のデータを範囲を指...
-
エクセル VBA 行間隔を飛ばした...
-
excel / ピポッド 日数を出したい
-
プルダウンに【なし、平均、デ...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
EXCEL 最終行のデータを他のセ...
-
VBA 複数行の検索及び抽出
-
検索条件に合うセルの個数を数...
-
VBA 配列で型がエラーになります。
-
行の一番右のデータセルと同じ...
おすすめ情報