- ベストアンサー
エクセルの関数がわかりません。ご教示ください。
公共の施設に勤めるPCの超初心者ですが担当する施設の予約状況表の作成をエクセルでスピードアップできないかと考え、関数のガイド書を片手に取り組んでいますが行き詰まって困っています。 まず、勤務する施設は月間約530件くらいの利用があるので清掃担当者が空きの間隙を縫って作業に明け暮れているので、スピードアップできれば少しくらい手助けができると思うのです。 施設予約状況表は半月分ずつ1日1枚の紙を使って縦軸に室名、横軸に時間帯(午前・午後・夜間)でなる単純な表でそれぞれの枠内には行事名や利用者名等が入ります。それを作るのに施設が採用している施設管理システムから一定期間の予約状況をエクセルの表にして取り出せることから別にエクセルを立ち上げておいて貼り付けました。 そして、貼り付けた表のうち施設内の諸室名(13室)と利用時間帯(午前・午後・夜間・午前+午後・午後+夜間・終日の6時間帯)を数値化、利用日の数値と利用者名と行事名の一覧表ができるようにしました。 私のもくろみは、別に用意する日々の予約状況表にVLOOKUP関数を埋め込んでおいて自動的に予約状況表が作成されるミニシステム的なファイルにすることで、ここまでできればセルの結合作業が残るだけですから大幅なスピードアップになると思うのですが、VLOOKUP関数で検索値となる数値、すなわち例えば利用される諸室名(B列)は「8」、利用日(C列)は「12」、利用時間帯(D列)が「5」、データが入っている行が「21~120」という場合、この3項目を全て満たすデータがどの行にあるかを探す関数がわからず、これだけでハンドブック片手に寝る時間も惜しんで3日間の試行錯誤していますがうまくいきません。文章がまずくて質問内容がよくわからないといわれるかもしれませんが宜しくご教示のほどお願いします。ーペコリー
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 解釈が違っていたらごめんなさい。 すでに表ができていて、その中で3列の条件が一致する行を すばやく見つけ出したい!ということですかね? 一応そういうことだとして回答させていただきます。 ↓の画像で説明させていただくと 検索条件を入力するセルG2~I2 を準備しておきます。 このセルに入力するとその行のE列に「○」が表示されるようにしてみました。 E2セルに =IF(COUNTBLANK(B2:D2)>0,"",IF(AND(B2=$G$2,C2=$H$2,D2=$I$2),"○","")) としてオートフィルで下へコピーすると 3つのセルの条件が一致するE列に「○」が表示されます。 尚、余計なお世話かも知れませんが、 もし3条件が一致する行があるとB列~D列の行を「赤」に塗りつぶすほう方も一緒に表示しています。 (この場合はE列は不要になりますかね?) 当方使用のExcel2003での場合ですが、 方法はデータが入っているB2セル~D列の最後までを範囲指定します (もっと下のセルまで範囲指定しても構いません) メニュー → 書式 → 条件付書式 → 「数式が」を選択し 数式欄に =AND($B2=$G$2,$C2=$H$2,$D2=$I$2) と入れて、書式 → パターン で「赤」を選択しOK これでG2~I2に条件を入力すれば一致する行が赤に塗りつぶされます。 他にも色々方法はあるかと思いますが、 参考になれば幸いです。 的外れなら読み流してくださいね。m(__)m
その他の回答 (2)
- ryou_nya
- ベストアンサー率44% (37/84)
解釈がちがったらすみません。 データがB21:D120の範囲に入っていて、 B列が8 C列が12 D列が5 が入っている行を探したいという前提で ひとつのセルに関数を一行で解決するには厳しいので E列も利用します。 E21に =IF(AND(B21=8,C21=12,D21=5),1,"") と入れます。 E21のセルを選択して右下の■をクリックしたまま E120まで下げる、 すると、E21~E120の間に式が同じようにコピーされます。 E22に =IF(AND(B22=8,C22=12,D22=5),1,"") E23に =IF(AND(B23=8,C23=12,D23=5),1,"") E23に =IF(AND(B24=8,C24=12,D24=5),1,"") ・ ・ これで3つの条件が成り立ったE列に 数字の 1 が入ります。 次に好きなセルに =sum(E21:E120) これでE21~120の間の合計を出します。 つまり条件一致するのが何個あるかです。 =MATCH(1,E21:E120,0)+20 これは 最初の 1 が 探したいもの 2番目のE21:120 が 探す範囲 3番目の0 が 完全一致したときで 探したいものが何番目に見つかったかをあらわします。 つまり 最初の21行目にあれば1番目に見つかったので1 の数字がでますから、最後に+20しています。 データ範囲内で何番目かを探したいのなら 後ろの+20を 消せばよいかと とりあえずこれで実現可能。 セルを使わず、結果だけがほしいならマクロを使えばよいかも もうちょっとやりたい事を具体的に根本から出してくれると もっと気の利いたやり方が回答してもらえるかもしれないですよ
お礼
丁寧なご指導有り難うございます。超初心者故の悲しさからか何度も何度も読み返してみないと理解できないようですが、おそらく当を得たご教示であると思います。今後とも宜しくお願いします。
先ずは[オートフィルタ]を勉強すると良いと思います。 次に[フィルタオプションの設定]を。
お礼
早々に回答をいただき有り難うございました。もっと上手く表現できたら、もう少し詳しく教えていただけたかなと反省していますが、ぶんさいもないのでご容赦ください。では、失礼します。
お礼
表までつけていただいた丁寧なご教示に感謝します。おそらく2番目にご教示いただいた方の内容と、貴方様のご教示の内容をかみ砕くように時間をかけて勉強したら、行き詰まっていることは解消できると思います。誠に有り難うございました。今後とも宜しくお願いします。