![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ある列のセルに以下の数式を入力しています。これだけだと問題ないのですが、さらにIF式を追加しようとするとエラーが表示されます。調べたところネストが上限のようです。VBAで同じような動作をさせたい場合、どのようになるのでしょうか?どなたか詳しい方助けてください。ちなみに日付を比較して、○や×を表示させるための式です。
=IF(RC[-2]>=R1C20,"",IF(AND(RC[-1]="",R1C20-RC[-2]<7),"△",IF(AND(RC[-1]="",R1C20-RC[-2]>7),"×",IF(RC[-1]=RC[-2],"○",IF(RC[-2]>RC[-1],"◎",IF(RC[-1]-RC[-2]<7,"△",IF(AND(RC[-2]="",RC[-1]<>""),"◎",IF(RC[-1]-RC[-2]>6,"×",""))))))))
No.4ベストアンサー
- 回答日時:
No.3です。
補足ありがとうございます。何日も経ってしまっていて恐縮ですが・・・
1つの式でやろうとするなら
◎、○、△、×、空白になる条件を全部洗い出して
IF(OR(条件,条件,条件),"◎",IF(OR(条件,条件,条件),"○",IF(OR(条件,条件,条件),"△",IF(OR(条件,条件,条件),"×",""))))
という形に落とし込んでいけばいいです。
ただ、式を分けて対応できているならそのままの方がいいかと思います。
細かく条件分けすればするほど式が冗長になり、
他の人が見て判り辛い、修正がし辛いということになりますから。
回答有り難うございます。まだ、一つの式で試していませんが、おっしゃられるような式でやってみます。式を分けたのは良いのですが、動きが非常に重くなりましたので、一つの式で少しでも負荷が減るようであればやる価値はあると考えています。
No.3
- 回答日時:
式の結果が◎○△×空白の5つしかないので、
きちんと条件を整理すればネストできなくはならないはずです。
No.2の方も言われているように、もう少し具体的に条件を
書いていただかないと、式だけで内容を理解するのは難しいです。
・RC[-2]に入っている日付は何の日付か?
・RC[-1]に入っている日付は何の日付か?
・R1C20に入っている日付は何の日付か?
・上記3つの日付でブランクが有り得るのはどれか?
・上記3つの日付がどういうときに◎○△×空白にしたいのか?
(日付がブランクである場合も含めて)
このあたりを補足いただけませんか。
ここからは私の推測ですが、
スケジュール表の一部か何かで
R1C20は今日の日付
RC[-2]は完了予定日
RC[-1]は実際の完了日
で、
完了予定日より前に完了している→◎
完了予定日に完了している→○
未完了で完了予定日を過ぎたが、まだ1週間たっていない→△
完了はしているが完了予定日を過ぎた、但し1週間以内→△
未完了で完了予定日を1週間以上過ぎた→×
完了はしているが完了予定日を1週間以上過ぎた→×
完了予定日がまだ→空白
みたいなことをやりたいのではないですか?
この回答への補足
ズバリおっしゃる通りです。びっくりしました。言われるとおりそのままで、完了予定日と実際の完了日はブランクの場合があります。今のところ3列使い、式を3つに分けて対応していますが、よりシンプルなやり方を教えて頂けると嬉しいです。宜しくお願いします。
補足日時:2008/05/01 19:27No.2
- 回答日時:
>VBAで同じような動作をさせたい場合、どのようになるのでしょうか
CASE文などが使えて、分けてかけたりできるので状況は変わります。
行継続文字も使えるので関数のようなことは無い。
ネストの深さの制約もそんなに少なくは無い。
VBAなら、ロジックとして、表引きを考える。IFをネストするのは考え方が一本調子で初心者に多いように過去の回答経験から思う。
この質問式も、IFを使わず何か検索関数でも使えないかという疑念は私の中では晴れていない。ただ式だけからしたい内容は割り出せないので、断言は出来ない。
ーー
余分なことだが、なぜセルの指定にR1C1形式を使うのか。実務では使わなかったし、このコーナーの回答でこれを使った例はない。式が長くなるのではないですか。
ーー
関数式を無理すれば、2列(個以上)に分けられる場合もあるように思う。中間結果を出して、それを次で使えばよい。
下記例
ーー
>VBAで同じような動作をさせたい場合、どのようになるのでしょうか
シートの実例も挙げるのが当たり前では。
そして条件を判りやすく文章で表現すべきだ。
長い式の解読まで回答者にやらせないでください。ましてR1C1形式は読みにくいのだ。
===
無理に条件を分けた例(すべての場合については可能かどうか判らないが)
A列13越える、B列24越える、C列37越えるをTRUEとして
A-E列第2行から
112131FALSEFALSE
122232FALSEFALSE
132333FALSEFALSE
142434FALSEFALSE
152535TRUEFALSE
162636TRUEFALSE
172737TRUEFALSE
182838TRUETRUE
192939TRUETRUE
D2は=(AND(A2>13,B2>24))
下方向に式を複写
E2に=AND(E2,C2>37)
下方向に式を複写
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 「1004:アプリケーション定義またはオブジェクト定義のエラー」への解消方法に関して 1 2023/07/09 11:47
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- 工学 制御工学の問題について 2 2022/10/30 20:20
- Excel(エクセル) Excelのセルのコピーについて 4 2022/12/26 15:01
- 物理学 方形波 x(t)が入力された時の出力y(t)を、コンボリュージョンを用いて求めよ。 画像の1.2.3 2 2022/10/10 14:06
- 数学 数学の質問です。 △ABCにおいて, ∠Aの二等分線が BC と交わる点をRとする。 辺BC, CA 2 2023/07/13 23:58
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFS関数の場合で、セルが空白の...
-
未、済、完了の英訳は?
-
has had to..
-
英語で短く表現するには・・(...
-
日本語「のち」の使い方につい...
-
started か have started か?
-
DMMの年齢確認のはいを押されて...
-
EXCEL:特定の文字が入力された...
-
荒野行動のAndroidからIOSのア...
-
duringと現在完了形
-
帰りにけりってどういうに訳す...
-
as soon as I've finished this...
-
現在完了と過去を表す語句について
-
「have been ~ing」と「have be...
-
By the time (過去完了形&過去...
-
現在完了
-
日本語説明「~した方がいい」...
-
had beenとwasの違いについて
-
as soon as SVの時制について
-
過去形?過去完了形?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IFS関数の場合で、セルが空白の...
-
未、済、完了の英訳は?
-
has had to..
-
DMMの年齢確認のはいを押されて...
-
英語で短く表現するには・・(...
-
started か have started か?
-
EXCEL:特定の文字が入力された...
-
as soon as SVの時制について
-
日本語「のち」の使い方につい...
-
帰りにけりってどういうに訳す...
-
as soon as I've finished this...
-
【完了と結果の違い】現在完了
-
report~ingの用法を教えてくだ...
-
has begunは継続?完了?
-
duringと現在完了形
-
過去完了と大過去の違いがわか...
-
「have been ~ing」と「have be...
-
過去完了とbefore、untilについ...
-
only economy seatsなぜ複数?
-
簡単な英語表現 ※ミスを訂正し...
おすすめ情報