- ベストアンサー
エクセルでうまく条件が作れなくて困っています!
ある計算式をおこなうための条件が適用されたら、次の条件を満たすまで先ほどの条件を無視して計算を続けるという感じでの設定をしたいのですが、関数などを利用して設定することは可能ですか? できるならやり方を教えてください。 具体例をあげると、スーパーで並んでいる客が5人以上になったら、2人に減るまでレジを開くという感じです。 今の状態は、レジを開いている間の計算式はできたのですが、その計算式を適用する条件をIF関数で客が5人以上の時にしてしまうと、4人になった時点で適用されなくなってしまいます。一度5人以上になったらまた2人以下に戻るまでは計算を続けたいのです。 関数を使った方法では無理ですか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
回答No2です。 マクロを作るといってもご質問の内容からしてかなり難しい問題があります。並んでいる客が5人以上と入力するのも人ならば、5人以下になったのを入力するのも人、時系列で客の流れをつかみ判断をして条件を設定する必要があるわけですが、それをパソコンにどんどんと入力していくのでしょうか?客の状況を的確に判断するための手段から考える必要がありますね。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルの関数を相当経験し、VBAをやるとわかるが、質問のような動的なことは関数では出来ない。 1人減る(増える9ごとに、判断や処理をさせてもらわないといけないのだが、そういうのは式を組み立てられない。 増える、減るも、モデルを作りソフトを使わないと、実現しない。勝手にはそうならないわけだから。大量、リアルタイムのでーたは人間が入力も難しい。来店客の情況のモデルなどはそういうものだ。 また処理する(例レジ打ち、金勘定、その他)には時間がかかるが、時間の経過を進めてくれる仕組みも必要。 VBAでも、並みのシートデータを計算する問題ではない。 ーー 質問の中身が具体的でないが、場合によっては「待ち行列(モデル、理論等)と関連したことかもしれない。 大學(院)の情報コースの課題で(簡単なのは情報処理試験にも出ているようだが)難しく、質問者にはにわかには手に負えないだろう。 ーー 結局中途半端な状態で質問しているから判りにくいのであって入庫、出庫、在庫数(計算)を各行に(遅滞無く)入力する場合において3を割り込まないなら何も表示しない、3未満なら、「発注せよ」とコメントを出すぐらいなら、IF関数で何てこと無い。 この事例と質問はどう違うか良く考えて、はっきりさせて質問のこと。
補足
回答ありがとうございます。 お察しのとおり、待ち行列の課題を解くために質問しました。 全部聞いてしまうと課題の意味がないので、どこまではっきり書くか悩んだあげくこうなりました。 やっぱり無理ですか・・・ 残念です。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
ツール - オプション - |計算方法| [レ]反復計算 にチェック B1セルに =IF(A1="","",IF(A1>=5,"Open",IF(A1<=2,"Close",B1))) A1セルに数値を入れると切り替わります。 [Delete]でリセット
補足
そんな方法があるんですか!? 関数は奥が深いですね。 すごいです。 回答ありがとうございました!
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答1はご質問の意味を勘違いしていました。 関数を使って対応することはできないでしょう。 マクロを考える必要がありますね。
補足
回答ありがとうございます!! 関数では無理ですか・・・ マクロに関してはまったくの素人なのでよく分かりません。 勉強してみます。 もしよろしければ、上の方法のマクロでのやり方も教えてくださるとたすかります。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA1セルの値が5以上ではB1セルの値はC1セルの値×10で3以上ではC1セルの値×5、1以上ではC1セルの値×2、1未満ではC1セルの値とする計算式をB1セルに入力するとしたら次のようになりますね。 =IF(A1>=5,C1*10,IF(A1>=3,C1*5,IF(A1>=1,C1*2,C1))) このようにIF関数を重ねることで対応することができるでしょう。
お礼
何度も回答してくださり、ありがとうございました。 結局違う方法を試みることにしました。 どうにか上手くいきそうです。 本当にありがとうございました!!