- 締切済み
ExcelのVLOOKUP関数で時刻を扱うと
こんばんは。 提出用の勤務表を作ろうと思っています。 ほぼ同じフォーマットで、入力用(a.xls)と提出用(b.xls)のファイルが2つあります。 2つのファイルに入力するのも手間なので、VLOOKUP関数で時刻だけ呼びだそうとしましたが、0:00になります。 どうしてでしょうか。 A列に日付、B列に始業時間、C列に終業時間を入れています。 始業時間を呼び出すのは日付を検索値にしたので、関数式はVLOOKUP($A1,[b.xls]Sheet1!$A$1:$c$31,2,TRUE)で合っていると思います。 どちらも表示形式は"h:mm"です。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chonami
- ベストアンサー率43% (448/1036)
時間よりも日付が気になりますね… ひょっとして、入力用の日付はずっと同じ入力済みのものを使っていて日付が今年ではないという事はないですか? 入力用には 7/1 7/2 7/3… と先に入力してあって(表示はm/d)、先の日付には時間が入っていない。シリアル値でみると実は今年より前の日付。 でも提出用は今年の日付を入れている。 VLOOKUPの最後の引数がTRUEだから…空欄を参照している。 >VLOOKUP($A1,[b.xls]Sheet1!$A$1:$c$31,2,TRUE) のTRUEをFALSEにしたら#N/Aが出ませんか? あれ?というか、何で提出用を参照してるの?普通は入力用から参照して提出用を作成しません?
- FEX2053
- ベストアンサー率37% (7991/21372)
「時間」どうやって入力してます? 表示形式を標準にするとわかるのですが、時間だけを入力した 場合と、日付から時刻表示で時間を引っ張った場合で、値が 全然違います。 Vlookupで日付や時間を見る場合は、必ずHourとかMinutesとか の関数で、整数にしてから比較してください。じゃないと思った 結果が得られない場合がありますよ。
- keithin
- ベストアンサー率66% (5278/7941)
>エラーメッセージは#VALUE?でした。 他のブックを直接参照する数式が書けませんか? では次の通りに操作します: 入力用ブックのシートを開く 1から31日まで、対象の時刻セル範囲をコピーする 提出用ブックのシートを開く 目的のセルを選び、形式を選んで貼り付けの「リンク貼り付け」をクリックする。 それでもダメだったときは、「やってみただめだった」じゃなくて、あなたが「具体的に記入したその通りの数式」をエクセルからそのままコピーして貼り付けて、一体全体「何をどうやったらどうなったのか」具体的な目に見えるあなたのエクセルの事実を丁寧にキチンと正しく詳しく情報提供してください。 #どうしてか、一発で終わらないご相談ばっかりで疲れます。。。愚痴 また、他のやり方も回答しましたが、その結果はどうだったのですか。それとも一か所躓いたらそこでもう先に進めずに立ち止まってしまって、やってみても無いのでしょうか?
- keithin
- ベストアンサー率66% (5278/7941)
フォーマットが同じなら =[入力用.xls]Sheet1!B1 と記入し、31までコピー貼り付けておくだけです。 実際にはフォーマットが違うなら。 まずは入力用の始業時刻が間違いなくB列に記入されているのか、よく再確認するところから始めます 次に関数を =VLOOKUP(A1,[入力用.xls]シート名!$A$1:$C$31,2,FALSE) に変えて、様子を見ます これでもエラーが出るようなら、入力用のA列と提出用のA列で「同じつもりで違う値」が記入されているので、正しく同じ内容で記入するように注意して作成します。 #入力用のA列から該当のセルをコピーして提出用A列に貼り付けて、動作を確認してみるのも良い方法です。これで上手くいったなら、貼り付いた内容を参考に提出用のA列の入れ方を再度よく見直します。
お礼
ご回答いただき有り難うございます。 すみません、補足のエラーメッセージは#VALUE?でした。
補足
=[入力用.xls]Sheet1!B1でエラーが出ないはずなんですが、なぜか#NAME?と出ました。ファイル名が長かったから(全角20文字以上)でしょうか?でも、ネスト構造ではもっと長く出来ますよね・・・