- 締切済み
エクセル関数について教えてください!
例 シート1のA列に部屋番号1~500まで入力してあって、別シートのA列に予約した部屋番号(1~500のどれか)が入力されると、シート1のA列の部屋番号と入力した番号と同じ場合、右横のB列に予約済みと自動的に入るような関数があったら、教えてください。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
ANo3,ANo6です。 補足要求の返事に対してだけ答えます。 > シート1に部屋の一覧があって予約状況を把握するため、 > シート1のB列に予約済かそうでないかの結果を出したいのです。 > 簡単にできますか?? ANo1,ANo2,ANo3 は回答のままで要求に答えています。(検証はしていませんが) 簡単にできます。 それぞれ、回答そのまま設定したらOKです。
- hallo-2007
- ベストアンサー率41% (888/2115)
少しヒートアップしてきましたが、ブック全体の見直しで、 シート1に作業列挿入して、 A B C D 作業列 作業列 部屋番号 C列に部屋番号101から500件入れておきます。 シート2に A B C D 作業列 日付 部屋番号 予約者氏名 2008/2/20 101 山田 太郎 B,C,D列に適当にサンプルの予約を入れておいてください。 シート2の作業列には、=TEXT(B2,"yymmdd")&TEXT(C2,0) といれて 適当な行まで下フィルしておいてください。入力した日付と部屋番号をひとつのセルに表示します。 まずは、シート1のD1に =VLOOKUP(10^10,Sheet2!B:B,1) と入れておくと、シート2の日付の最後の行に入れた日付がでます。 D2には、=VLOOKUP(TEXT(D$1,"yymmdd")&TEXT($C2,0),Sheet2!A:D,4,FALSE) 下フィル(行が多いので、D2クリックして、右下にマウスもうっていって+の表示になったら、マウスをダブルクリックで、一度に下フィルされます) これで。予約がある部屋番号に、予約者の氏名が表示、空室にはエラー表示されます。 シート1のB2に =IF(ISERROR(D2),ROW(),"") A2に、=INDEX(C:C,SMALL(B:B,ROW(A1)),1) いれて、下フィル(セル右下+をダブルクリック) A列に、空室の部屋番号だけが表示されます。 シート1のA列選択して、「挿入」「定義」で、名前を空室部屋番号とでも名前をつけておきます。 シート1のC列(部屋番号)を選択して、「データ」「入力規則」「リスト」で=空室部屋番号 と指定します。 これで、B列に予約の日付入れると、C列の部屋番号を入れるときに、セルの右に▽が表示されて、空室の部屋番号しか入力できなくなります。 シート2のE列より右に今後の日付入れて関数右フィルしておくと、予約状況の一覧が表示されますが、関数目いっぱい表になりますので、動作が遅く感じてくると思います。応用で検討してください。
- tama1978
- ベストアンサー率24% (57/237)
#4です。 ISERROR関数を使用した方が、見やすいですね。 #6さんの助言より重複対策の代案を一つ。 シート2に予約した部屋番号を入力ですよね。 A B 1 *** 空白 2 *** =IF(ISERROR(VLOOKUP(A2,A$1:A1,1,FALSE)),"","重複") 3 *** ドラックコピー 4 *** ドラックコピー A1から順序よく入力していけば、重複した部屋番号を入力した場合、B列に『重複』と表示され確認できます。 関数のみの苦肉の策ですが。
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
はははは~~ 笑っちゃいますね♪ MATCH関数に、COUNTIF関数に、VLOOKUP関数 お見事! 他の関数も募集中(笑) minishibaさんへ 自宅から最寄の駅に行くのにルートは何通りもあるように、 正解は1つでは無いのです。 検証はしていませんが、どれもそれなりに動くと思いますよ。 おっ!VLOOKUP に2票 しかし、自分は残念ながら二重予約の対策を示していなかった(悔) おっ!COUNTIF に2票 しかし、これは違った考え方ですね。う~む! たぶん、電話で予約を受けた場合に、シート1の予約状況を見ながら、返事をしたいのでしょうね。 まてよ! minishibaさんへ 「右横のB列に予約済み」とはどちらのシートの右横? ただ単に部屋を割り当てるだけなのかな? これは削除対象かな? いいや!立派な補足要求ですっ!(笑)
- esupuresso
- ベストアンサー率44% (257/579)
≫シート1のA列に部屋番号1~500まで入力してあって・・・ とは、単に部屋番号を入力しているだけなのでしょうか? だとするならシート2のA列に予約番号を入力した際シート2のA列内に重複番号があるかどうかだけの問題だと思います 見出し行【A1】に「部屋番号」、【B1】に「予約状況」 シート2の【A2】に部屋番号を入力 シート2の【B2】に =IF(COUNTIF($A$2:A2,A2)>1,"予約済み","") としてオートフィルで好きなだけコピーします シート2のA列内に同じ番号が入力されるとB列に「予約済み」と出ます
- tama1978
- ベストアンサー率24% (57/237)
B1セルに =IF(VLOOKUP(A1,Sheet2!A$1:A$500,1,FALSE),"予約済み") を入力します。 B1以下は、これをドラックして貼り付けてください。
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
B1セルに =IF(ISERROR(VLOOKUP(A1,Sheet2!$A$1:$A$500,1,FALSE)),"","予約済み") と入れて、シート1のA列に部屋番号1~500まで入力してあるところまで下へコピー Sheet2!$A$1:$A$500 は、 別シートの名前をSheet2とした。 A列がどこまであるかわからないので、500行までとした。 実情に合わせて変更してください。 ではでは。
- hallo-2007
- ベストアンサー率41% (888/2115)
別シート(仮にSheet2として)に、その番号があるかどうかなら COUNTIF関数が使えそうです。 シート1のB2列に =IF(COUNTIF(Sheet2!A:A,A2)=1,"予約済み","") で、下フィルしてみてください。 更に、同じ部屋番号が重複して入力できないようにするには、入力規則で出来ると思います。
- poohron
- ベストアンサー率59% (574/971)
シート1のA1~A500に1~500が入力してあり、 シート2のA1~A500に予約した部屋番号を入力する場合 シート1のB1に =IF(ISNA(MATCH(A1,Sheet2!A$1:A$22,0)),"","予約済み") として、B500までドラッグしてみてはいかがでしょう? シート2に同じ部屋番号が入力されていないか チェックする仕組みも付けないとなりませんが…。
補足
すみません、説明が至らなかったようで、、 おっしゃる通り、電話で予約を受けたとき、 シート1に部屋の一覧があって予約状況を把握するため、 シート1のB列に予約済かそうでないかの結果を出したいのです。 簡単にできますか??