重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

例 シート1のA列に部屋番号1~500まで入力してあって、別シートのA列に予約した部屋番号(1~500のどれか)が入力されると、シート1のA列の部屋番号と入力した番号と同じ場合、右横のB列に予約済みと自動的に入るような関数があったら、教えてください。

A 回答 (9件)

ANo3,ANo6です。


補足要求の返事に対してだけ答えます。
> シート1に部屋の一覧があって予約状況を把握するため、
> シート1のB列に予約済かそうでないかの結果を出したいのです。
> 簡単にできますか??

ANo1,ANo2,ANo3 は回答のままで要求に答えています。(検証はしていませんが)
簡単にできます。
それぞれ、回答そのまま設定したらOKです。
    • good
    • 0

少しヒートアップしてきましたが、ブック全体の見直しで、


シート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列より右に今後の日付入れて関数右フィルしておくと、予約状況の一覧が表示されますが、関数目いっぱい表になりますので、動作が遅く感じてくると思います。応用で検討してください。
    • good
    • 0

#4です。


ISERROR関数を使用した方が、見やすいですね。

#6さんの助言より重複対策の代案を一つ。
シート2に予約した部屋番号を入力ですよね。
A B
1 ***  空白
2 *** =IF(ISERROR(VLOOKUP(A2,A$1:A1,1,FALSE)),"","重複")
3 *** ドラックコピー
4 *** ドラックコピー

A1から順序よく入力していけば、重複した部屋番号を入力した場合、B列に『重複』と表示され確認できます。
関数のみの苦肉の策ですが。
    • good
    • 0

はははは~~


笑っちゃいますね♪
MATCH関数に、COUNTIF関数に、VLOOKUP関数
お見事!
他の関数も募集中(笑)

minishibaさんへ
自宅から最寄の駅に行くのにルートは何通りもあるように、
正解は1つでは無いのです。
検証はしていませんが、どれもそれなりに動くと思いますよ。



おっ!VLOOKUP に2票
しかし、自分は残念ながら二重予約の対策を示していなかった(悔)

おっ!COUNTIF に2票
しかし、これは違った考え方ですね。う~む!
たぶん、電話で予約を受けた場合に、シート1の予約状況を見ながら、返事をしたいのでしょうね。

まてよ!
minishibaさんへ
「右横のB列に予約済み」とはどちらのシートの右横?
ただ単に部屋を割り当てるだけなのかな?


これは削除対象かな?
いいや!立派な補足要求ですっ!(笑)

この回答への補足

すみません、説明が至らなかったようで、、
おっしゃる通り、電話で予約を受けたとき、
シート1に部屋の一覧があって予約状況を把握するため、
シート1のB列に予約済かそうでないかの結果を出したいのです。

簡単にできますか??

補足日時:2008/02/18 23:21
    • good
    • 0

≫シート1のA列に部屋番号1~500まで入力してあって・・・


とは、単に部屋番号を入力しているだけなのでしょうか?

だとするならシート2のA列に予約番号を入力した際シート2のA列内に重複番号があるかどうかだけの問題だと思います

見出し行【A1】に「部屋番号」、【B1】に「予約状況」
シート2の【A2】に部屋番号を入力
シート2の【B2】に =IF(COUNTIF($A$2:A2,A2)>1,"予約済み","")
としてオートフィルで好きなだけコピーします

シート2のA列内に同じ番号が入力されるとB列に「予約済み」と出ます
    • good
    • 0

B1セルに


=IF(VLOOKUP(A1,Sheet2!A$1:A$500,1,FALSE),"予約済み")
を入力します。
B1以下は、これをドラックして貼り付けてください。
    • good
    • 0

B1セルに


=IF(ISERROR(VLOOKUP(A1,Sheet2!$A$1:$A$500,1,FALSE)),"","予約済み")
と入れて、シート1のA列に部屋番号1~500まで入力してあるところまで下へコピー

Sheet2!$A$1:$A$500 は、
別シートの名前をSheet2とした。
A列がどこまであるかわからないので、500行までとした。
実情に合わせて変更してください。

ではでは。
    • good
    • 0

別シート(仮にSheet2として)に、その番号があるかどうかなら COUNTIF関数が使えそうです。


シート1のB2列に
=IF(COUNTIF(Sheet2!A:A,A2)=1,"予約済み","")
で、下フィルしてみてください。

更に、同じ部屋番号が重複して入力できないようにするには、入力規則で出来ると思います。
    • good
    • 0

シート1のA1~A500に1~500が入力してあり、


シート2のA1~A500に予約した部屋番号を入力する場合

シート1のB1に
=IF(ISNA(MATCH(A1,Sheet2!A$1:A$22,0)),"","予約済み")
として、B500までドラッグしてみてはいかがでしょう?


シート2に同じ部屋番号が入力されていないか
チェックする仕組みも付けないとなりませんが…。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!