- ベストアンサー
エクセルの関数を使ってデータベースの情報を表示する方法
- エクセルでデータベースの情報を表示する方法について教えてください。
- 1つめのシートにはコード番号、名称、郵便番号、住所、電話番号が入力されています。
- 2つめのシートにはコード番号、数量が入力されています。エクセルの関数を使って、2つめのシートのコード番号の横に1つめのシートの名称や郵便番号、住所を表示させたいです。具体的な設定方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
1つめのシートが A B C D E 1 コード番号 名称 郵便番号 住所 電話番号 2 3 2つめのシートが A B C D E 1 コード番号 数量 2 3 などという感じになっているのでしょうか? もしそうであれば、 2つめのシートの「C2」セルに =VLOOKUP($A2,Sheet1!$A$2:$E$100,2,FALSE) 「D2」セルに =VLOOKUP($A2,Sheet1!$A$2:$E$100,3,FALSE) 「E2」セルに =VLOOKUP($A2,Sheet1!$A$2:$E$100,4,FALSE) 「F2」セルに =VLOOKUP($A2,Sheet1!$A$2:$E$100,5,FALSE) と入力して、下にコピーしてみてください。 もしも1つめのシートの名前を変更しているのであれば、上の式の「Sheet1」の部分を変更してください。 また、1つめのシートのデータが100行目以降にも入力されている場合は「$E$100」の部分の100を増やしてください。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)VLOOKUP関数を使うのが適当と思います。 (2)他にMATCH-OFFSET,MATCH-INDEXでも出来そうです。 (3)>『データベース』という関数を使うことうことはわかるのですが、 データベース関数と言うのは「D---」の名の付いた関数で、(1)、(2)はデータベース関数とは言わないと思います。データベース関数の中にDGET関数がありこれによる回答を上げます。 しかし式複写が難しく、適してない事の説明を上げます。 (例データ)Sheet1のA1:E4 コード番号 名称 郵便番号 住所 電話番号 112 山田 345-1111 千代田区 234-2345 113 鈴木 234-1234 三鷹市 211-2311 114 田中 211-1234 八王子市 345-1234 Sheet2のA1:F1とA2、B2 コード番号 数量 名称 郵便番号 住所 電話番号 113 34 (関数式)Sheet2の C2に=DGET(Sheet1!$A$1:$E$4,"名称",Sheet2!A1:A2) D2に=DGET(Sheet1!$A$1:$E$4,"郵便番号",Sheet2!$A$1:$A$2) E2に=DGET(Sheet1!$A$1:$E$4,"住所",Sheet2!$A$1:$A$2) F2に=DGET(Sheet1!$A$1:$E$4,"電話番号",Sheet2!$A$1:$A$2) で鈴木 234-1234 三鷹市 211-2311 が採れます。 しかしA3に別のコードを入れたとき コード番号 114(例) の組み合わせの作りにくさから、DGET関数は不適だと思います。
- shyster
- ベストアンサー率0% (0/1)
“コード番号” が順番にならんでないならこんな macro を使う.使い方は VLOOKUP とほぼ一緒. Public Function FindInRange(vValue As Variant, rangeT As Range, lCol As Long) As Variant Dim lRow As Long Dim vFind As Variant If IsEmpty(vValue) Then FindInRange = Empty Exit Function End If If Not (TypeOf rangeT Is Range) Then FindInRange = CVErr(xlErrNum) Exit Function End If If lCol < 1 Or lCol > rangeT.Rows.Count Then FindInRange = CVErr(xlErrNum) Exit Function End If For lRow = 1 To rangeT.Rows.Count If rangeT.Rows(lRow).Cells(1, 1).Value = vValue Then vFind = rangeT.Cells(lRow, lCol).Value FindInRange = vFind Exit Function End If Next lRow FindInRange = Empty End Function (Indent とれちゃうね.許せ)
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
VLOOKUP関数の見本みたいな質問ですが、 1つめのシート(Sheet1)の項目が各列にあり、その下に100行までデータがあるものとします。 A1=コード番号 B1=名称 C1=郵便番号 D1=住所 E1=電話番号 2つめのシート(Sheet2)の項目も下記の各列にあるものとしたとき、 A1=コード番号 B2=数量 C~Fまでが1つめのシートからコード番号をキーにデータを引っ張ってきます。 C1=名称 D1=郵便番号 E1=住所 F1=電話番号 各項目の下には以下の式が入ります。 C2=VLOOKUP(A2,Sheet1!$A$2:$F$100,2,FALSE) D1=VLOOKUP(A2,Sheet1!$A$2:$F$100,3,FALSE) E1=VLOOKUP(A2,Sheet1!$A$2:$F$100,4,FALSE) F1=VLOOKUP(A2,Sheet1!$A$2:$F$100,5,FALSE) これを以下必要な行までコピーします。
- esprei
- ベストアンサー率56% (718/1271)
vlookup関数を使えば出来るかな。 もしくはhlookup。 コード番号から電話番号までがそれぞれ列単位で入力されているのならvlookupです。 たとえばSheet1のA列にコード番号、B列に名称・・・E列に電話番号。 Sheet2のA列にコード番号。 B列に名称を入れたいとします。 B2から入るとして、B2のセルに、 =vlookup(A2,sheet1!A:E,2,0) これで名称が検索されます。 =vlookup(検索したい文字列,検索する範囲,検索で見つかった時に表示する文字列が範囲の何行目か,検索の型) つまり、検索するのはコード番号。 範囲はSheet1のデータ。 範囲指定の時にコード番号(検索したい文字列)が一列目に来ることが条件。 名称を表示したいので、範囲で言うと2列目となる。 関数で言うと、検索になります。
- macbain
- ベストアンサー率37% (147/391)
VLOOKUP関数でできます。VLOOKUPは極めてポピュラーな関数なので、教えて!goo(あるいはOKWEB?)で検索すれば過去の質問が山のようにヒットしますのでそちらを参考になされてはいかがでしょう。 参考URLはEXCELのHELPのような解説ページです。
お礼
まとめてお礼をさせていただきます。 みなさまどうもありがとうございました。 とりあえず今日、No.2の方の答えを参考にさせていただき、試してみました。 うまくいきました。 明日以降、他の方のやり方も試してみようと思います。