- ベストアンサー
関数で出来ますか?。
エクセルのシートでA列に固定顧客番号が入力されていきます。 B列に顧客氏名が入力されます。 A列に不特定多数の番号が入力され、たとえば500行目に1234と入力したならその500行目のB列に過去に入力された1234の顧客名が表示されるようにしたいのですが。 A列は日々入力され2000行くらいまで使用します。 もしできるようでしたなら何処にどのような関数を入れればよいか教えてください。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>AB列に関係なくDE列でも行なえるようにするにはどのように式を変えればいいのでしょうか。 仮にA列には2000行目まで入力が済んでいたとして、今度はE列の500行目から関数を入れる場合には、 =IF(COUNTIF($A$1:$A$2000,D500)>0,VLOOKUP(D500,$A$1:$B$2000,2,0),VLOOKUP(D500,$D$1:$E499,2,0)) とすれば、上手くいくと思いますが・・・ (A列に同じ氏名があればA列から、A列になければD列から探せ、という命令にしています) もし、私が勘違いしてましたら、お手数ですが、お知らせください。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。 >エクセルが少しできる人に聞いたらあなたと同様の考え方を教えて頂きました なぜそれなら、そのように(VLOOKUP関数は聞いている・知っているとと)質問に書かないのでしょう。全くVLOOKUP関数がb言及が無いので #2のようになった。 >別シートに入力しておかなければならないため、私的にはちょっと手間になるので であれば、Sheet1の顧客番号ー顧客氏名対応表を使えばよいだけです。 普通はその今ある顧客番号ー顧客氏名シートを私の言うSheet2にし、Sheet1を別途作る形かなと思います。 同一シートの表を使うほうが、式の上からは少し簡単。 >今まで入力したもので反映できないのかなと思い質問させていただきました 今までの入力したものが生かせます。別シートにコピーしても良いではないですか。 >他に方法が無ければシートを別につくり そんなことは言ってません。既作成の対応表を使えるでしょう。 ーー 結局質問の表現が (1)VLOOKUP関数は知っている (2)顧客番号ー顧客氏名対応表はできている(一部?全部?) (3)(2)と同一シート!に >番号が入力され、たとえば500行目に1234と入力したならその500行目のB列に過去に入力された1234の顧客名が表示されるようにしたいのですが が、表現されて無かったことが問題なんです。 >#1で、「AB列に関係なくDE列でも行なえるようにするにはどのように式を変えればいいのでしょうか」 1シートで2箇所(列)も、顧客番号ー顧客氏名でVLOOKUP関数を使うのですか。考えられない。 仮にあったとしても、AB列でできたなら、DE列でも式を修正するのは簡単なはず。 事態が良く見えない。質問文の表現が、明確でなおからと思う。
お礼
再度のご回答ありがとうございます。 表現がまずくいらぬ配慮をさせてしまい申し訳ありません。 私自身が関数の使用方法をよく理解できていればこのような質問はしないものと思います。 よく理解できていないのに、このような事が出来ないかとか、じゃここにも応用できないとかと考えたものでして、悪気があっての質問ではありません事をご理解お願いいたします。 気分を害されたのならお許し下さい。 AB列で出来てDE列でも出来なかったものですから・・・。 式は間違っていないと思うのですが、なぜか出来ないのです。 その何かがいまだにわかりません。 その程度の者ですので、気を悪くしないで下さい。
- imogasi
- ベストアンサー率27% (4737/17069)
>エクセルのシートでA列に固定顧客番号が入力されていきます。 B列に顧客氏名が入力されます。 このシートをSheet2とします。 >A列に不特定多数の番号が入力され、で言っているシートとは別なのでしょう。はっきりさせること。Sheet1とする。 ーー Sheet1のA列に顧客番号を入力するとき、そのB列に、対応する顧客氏名を出すということでしょう。 ーー 良くある質問で、VLOOKUP関数のFALSE型が最適です。 Sheet2に 1 田中産業 2 山本商事 3 木村建設 4 近藤交通 を入れておきます。 Sheet1のA1には顧客番号をいれ、 B1に =VLOOKUP(A1,Sheet2!C,2,FALSE) と入れます。 ここでSheet2では、4行しか、会社データが無いのに、 Sheet2!$A$1:$B$1000と指定しています。このように余裕を持って範囲を指定し手も差し支えないはずです。 この後、5 東京ホテル が増えても式は変えなくて良い。1000行は越えると影響しますが まず越えない数で、多めに定義しておけばよい。 ここを神経質に関数で最終行を、定義する方法もありますが、複雑になるだけ。 ーー 入力より、先にA列錦を入れると、上記ではエラーになる。 防ぐには =IF(A1="","",VLOOKUP(A1,Sheet2!$A$1:$B$1000,2,FALSE)) と入れて下方向に式を複写しておく。 この式の複写の最下行も、まず越えない数で、多めに関数を入れておけばよい。 何かシルシをつけておく必要はあるかもしれない。 A列に番号を入れても、B列に会社名が出なくなるのでわかるが。
お礼
回答ありがとうございました。 エクセルが少しできる人に聞いたらあなたと同様の考え方を教えて頂きました。 別シートに入力しておかなければならないため、私的にはちょっと手間になるので、今まで入力したもので反映できないのかなと思い質問させていただきました。他に方法が無ければシートを別につくり応用させていただきます。ありがとうございました。
もし499行目まで入力が済んでいるとしたら、 以下の式をそのままコピーして、B列の500行目にペーストしてください。 (もし■行目まで入力が済んでいるとしたら、式の中の500→■+1、499→■ に置き換えればよいです) =VLOOKUP(A500,$A$1:$B499,2,0) ←ポイントは499の前にだけ$(絶対参照)を付けない そして、B500のセルをコピーして、B501~B2000までを全て選択し、「形式を選択してペースト」→「数式」で「OK」してください。 そうすると、A列に顧客番号を入れ、それ以前にもし同じ番号があれば、自動的にB列に顧客名が返されます。 もし新規の番号であればB列に「#N/A」と返されますので、手入力で顧客名を入れる必要があります。
お礼
ありがとうございました。早速昨日仕事終了後に挑戦してみました。うまく出来ましたが。応用がだめでした。時間が有ったなら補足への回答もお願いいたしたいのですが、重ね重ね宜しくお願いいたします。
補足
早速のご回答ありがとうございます。 A列B列では反映できるようになりました。 これをD列E列に応用しようとしましたがうまくいきませんでした。 AB列に関係なくDE列でも行なえるようにするにはどのように式を変えればいいのでしょうか。お願いいたします。 =VLOOKUP(D500,$D$1:$E499,2,0)としましたがうまくいきませんでした。
お礼
再度のご回答ありがとうございました。 私の表現が悪くて申し訳ありません。 私自身、関数をよく理解していないので変に誤解しないで頂きたいのですが・・・・ 条件は最初に頂いた回答のままです。 AB列の応用をDE列に当てはめようとしたのですがうまく行きませんでした。 別シートに同様の条件で5行ですが作成してみたところうまく反映できました。 このことから、今まで使用していたシートに何らかの間違いがあるのではないかと思われます、文字の使い方や入力間違いなどです。 もう一度最初から見直してみます。ありがとうございました。