- 締切済み
Excelで2つのシートとリンクさせたい
こんにちは。 一つ目のシートに顧客住所録があり、2つ目のシートに売り上げ詳細があります。 双方ともに顧客IDで管理しておりますが、別シート(ブックならなお可)で顧客IDを打ち込むと顧客住所と売り上げが表示させるようにしたいのです。 どのようにしたらよいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
>VLookUpは知っていますが、何もないまっさらなシート上で数字を打ち込むと住所、売り上げが表示させるようにしたいのです 関数式はあらかじめ決めたセルか、セル範囲に入れておかないとダメです。 数字を打ち込むことによる情報はその近くの別セルでないと出せません(数字を入れた自分のセルには出せません) その場で入れてもよいですが、ワンクリックというわけには行きません。 打ち込んだこと、およびそのセル番地を知るにはVBAのイベントの仕組みを知らないとダメだし、顧客ID(数字か)をENTERで入れたことを 捕らえるのがエクセルVBAでは難しい。 一方項目が増えてもプログラムの難しさはあまり変わりません。 またVLOOKUPは見つけた最初の行のデータしか返しません。売り上げは1顧客何行もデータがあるので不向きでしょう。 結局プログラムの熟達者でないと難しいでしょう。 これでさよならも愛想ないので、実用でなくお遊び程度で Sheet1の A1:B7に 1 山田 2 小島 3 松下 4 早川 5 富士 6 日立 7 芝浦 と入れて、Sheet4のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo errrtn Dim sh1 As Worksheet Set sh1 = Worksheets("Sheet1") Application.EnableEvents = False Name = WorksheetFunction.VLookup(Target, sh1.Range("a1:B7"), 2, False) Target.Offset(0, 1) = Name errrtn: Application.EnableEvents = True End Sub を入れるとSheet4で、どこでもセルに数字1から7の1つを入れると、名前が即座に右のセルに出ます。 これを応用したようなものならできるのですが、 他シートへの拡張 顧客IDでの売り上げの該当全件検索 などVBAでも難しい課題が待っています。 Changeイベントも困ったことがあるようです。
- OsieteG00
- ベストアンサー率35% (777/2173)
検索範囲指定の仕方: [Book名]シート名!セル番地 例:[Book1]Sheet1!$A$12:$F$17 をvlookup関数の引数で指定すればよいです。 同一シート上のデータでなくとも検索できます。 あとのvlookupの方は過去ログや他のwebページを参照してください。
- murabon
- ベストアンサー率23% (42/180)
vlookup関数で他シートのデータを顧客番号で呼び出してきて、表示させることができますよ。 =vlookup(顧客コード,データのある領域,データの列番号,検索の型←空欄で可) です。 過去スレでもよく出てくるので、ご参照ください。
お礼
ご回答ありがとうございます。 VLookUpは知っていますが、何もないまっさらなシート上で数字を打ち込むと住所、売り上げが表示させるようにしたいのです。 しかも、住所は郵便番号、都道府県…売上表はアイテム番号、数量、品名、金額…列が別になっており、それぞれをそのまま表示させたいのです。 Vlookupを使用する場合、データの領域や列番号はどのようにせんたくすればよいのでしょうか?