- ベストアンサー
手入力をしても数式が消えないようにするには?
エクセル2000を使用しています。例えば A1にコード番号を入力すると、隣りのB1に商品名が表示される ようになっています。B1にはVLOOKUP関数が入っています。 しかし、コード番号に対応していない商品の場合はB1のセルに 直接、商品名を入力したいのですが、そうするとVLOOKUP関数 が消えてしまうので次回使うときに困ってしまいます。 リストが使えるとよいのですが、選ぶ商品の数が100個以上 あるので断念しました。 コード番号などで入力もでき、さらに特別な場合は直接入力も できる良い方法はありますでしょうか? 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(1)表1をA1:B9に挿入-名前をクリックし名前定義し、C1に値(商品コード)を入れ、それに対応する商品名を出すためD1に =IF(ISERROR(VLOOKUP(C1,表1,2,FALSE)),$E$1,VLOOKUP(C1,表1,2,FALSE))を入れてみました。 表1にないコードを入れると、D1に「0」とでましたのでE1セルに商品名を入れる。するとC1にその商品名が入る。それで該当があった場合と同じようになる。 (2)しかしC1,E1のペアーは表1に自動的に増やす ことは出来ません。 (3)表1の下行のほうに、行挿入しても本体表に影響が ないなら、行挿入してC1,E1を入力すると、表1は C!,E1のペアーも含まれる。 (4)でなければ、表の定義しなおしが必要。 本来はVBAを使わないと、目的を遂げられないとおもう。 関数はセルに値を与えるだけで、セル、行、列、罫線を挿入削除出来ないし、色、その他いろいろなものを変える機能はないです。
その他の回答 (2)
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/367)
おっしゃるように、B1に直接入力すると、VLOOKUP関数が消えてしまいます。 #1の方が言われるように間接的な方法しか無いですね! F1:G100に商品コード:商品名のテーブルがあるとして、 B1に以下の関数を入れる。 =IF(C1<>"",C1,VLOOKUP(A1,F1:G100,2,FALSE)) ただし、この関数ですとC1に入力があれば、それが優先されます。
お礼
この方法もスマートでいいですね。 どうやら間接的な方法か、全く別の操作で対応 するしかないことがわかってよかったです。 回答どうもありがとうございました。
- hinebot
- ベストアンサー率37% (1123/2963)
もっと、いい方法があるかも知れませんが。 間接的に入力するというのはダメなんでしょうか。 例えば、B1には、VLOOKUP関数とIF関数を組み合わせて ・コード番号に対応する商品ならば、その商品名を表示する ・コード番号に対応していない商品の場合は、C1のセルを参照する という風になるように式を入れ、 直接入力したいときは、C1に入力する という風にすればどうでしょうか。
お礼
なるほど!と思いました。説明が足りなくて申し訳なかった のですが、見積書のようなものを作成しているため、印刷する ことを考えると少し難しいです。 早速の回答どうもありがとうございました。
お礼
詳しい回答をどうもありがとうございました。 試してみたらうまくできました。説明が足りなくて 申し訳なかったのですが、最後に印刷をしたいので 列を非表示にするなどで対処できそうです。