- 締切済み
エクセルVLOOKUP関数の参照先に関して
エクセルのVLOOKUP関数に関する質問です。 BOOK(1)とBOOK(2)(それぞれは別フォルダに入っています)があり、 BOOK(1)の中でVLOOKUP関数を用いて、BOOK(2)からデータを参照しています。 参照先のBOOK(2)は管理者以外読み取り専用となっていますが、 たとえ保存できなくても誰かがデータを書き換えたり、別名で保存したりすると、VLOOKUPの参照結果も、書き換え後のデータ(別名保存したファイル)になってしまうようです。 希望としては、VLOOKUPの参照先であるBOOK(2)を固定したいです。 この件に関して、対処法はありますでしょうか。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ham_kamo
- ベストアンサー率55% (659/1197)
No.2です。 先ほどの回答ではうまくいかないことがわかったので、補足です。 ・シート保護を解除(パスワード入力) ・編集 ・保存 ・再びシート保護でパスワードを設定 と書きましたが、最後にシート保護をした時点で、「シート保護をした状態で保存」することができなくなってしまいます。右上の×で閉じると「保存しますか?」というダイアログが出るので、これで保存できるかと思ったら、保存はしたものの再びブックを開くとシート保護が解除されている状態でした。(なぜかはわかりませんが?) マクロを仕込まなければ、シート保護した状態で保存できますが、名前をつけて保存もできてしまいます。 申し訳ありませんが、No.2の回答は無視してください。
- ham_kamo
- ベストアンサー率55% (659/1197)
まず管理者以外は編集できないようにしましょう。 ツール>保護>シート保護 を選択し、パスワードを入力してOKを押します。 こうしておけば、シートの内容を変更できなくなります。管理者が編集を行いたいときは、 ツール>保護>シート保護解除 でパスワードを入力し、シート保護を解除すれば編集できるようになります。 さらに別名で保存もできなくする方法です。 Alt+F11でVBAの画面を開き、左側のThisWorkbookをダブルクリックして、右の画面に以下のマクロをコピーして貼り付けておくと(Sheet1のところは実際のシート名に書き換えてください)、シート保護を解除している間だけ保存ができるようになります。シート保護がかかっている状態では名前をつけて保存もできません。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Worksheets("Sheet1").ProtectContents = True Then Cancel = True End If End Sub 管理者が内容を編集するときは、 ・シート保護を解除(パスワード入力) ・編集 ・保存 ・再びシート保護でパスワードを設定 という手順でやればよいかと思います。 マクロが無効にされていたらこの方法は回避されてしまいますが…。
- mshr1962
- ベストアンサー率39% (7417/18945)
=VLOOKUP(基準値,INDIRECT("[ブック名.xls]シート名!範囲名"),列番号,検索方法) でできませんか?
お礼
回答ありがとうございました。 やってみたのですが、うまくいきません。 私の入力がおかしいのかもしれないので、 いろいろ試してみます。
お礼
お礼が遅くなりました。申し訳ございません。 ご丁寧に回答いただき、ありがとうございました。 エクセル初心者なので、いろいろと悪戦苦闘中です。 また機会があればよろしくお願いいたします。