- ベストアンサー
エクセルでデータベースからの英数字を抽出する方法
以下のようなプログラム(?)がエクセルでできないかご教授ください。 1.2文字程度の英数字のデータベースがあり、それぞれの値は答えとなる英数字に該当しています。 (例えば、「0A」というデータベースにあるデータは「10」という数字に該当) 2.作りたいのは、データベースにある英数字を入力又はプルダウンなどで選択すると、答えとなる英数字が他のセルにでるようにしたいです。 全く検討もつかず質問してます。どうかよろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1に元のデータベースがあるとして、「データベースにある英数字を入力又はプルダウンなどで選択すると、答えとなる英数字が他のセルにでるように」したいシートをSheet2とします。 また、Sheet1のA列に「英数字のデータベース」、B列に「答えとなる英数字」が入力されているとします。 Sheet2のA列にプルダウンリスト、B列にそれに対応する英数字が表示されるようにするには、次のようにします。 1)Sheet1のA列を選択して、挿入→名前→定義で適当な名前(例えば「データベース」)を定義して「OK」。 2)Sheet2のA列を選択して、データ→入力規制の「条件の設定」で「入力値の種類」を「リスト」、「元の値」に「=データベース」と入力して「OK」。 3)Sheet2のB1に =IF(A1="","",VLOOKUP(A1,Sheet1!A:B,2,FALSE)) と入力してB2以下にコピー。 一応、以上で完了ですが、一度お望みの動作をするかどうかお試しください。
その他の回答 (4)
- s_yoshi_6
- ベストアンサー率73% (1113/1519)
#2です。先ほどの回答では2つの関数を使っています。 ●IF(論理式, 真の場合, 偽の場合) ●VLOOKUP(検索値, 範囲, 列番号, 検索の型) =IF(A1="","",VLOOKUP(A1,Sheet1!A:B,2,FALSE)) の関数の意味は、 「もしA1が空白の場合は空白を表示する。それ以外の場合は、Sheet1のA:B列の範囲で一番左の列(A列)を検索して、A1の値と一致するものを探し、一致した行でその2番目の列(B列)にあるものを表示する。」 というものです。基本的には、 =VLOOKUP(A1,Sheet1!A:B,2,FALSE) だけでも良いのですが、A欄が空白の場合にエラー表示が出るので、それを避けるためにIF関数で条件分けをしています。 また、上記式ではVLOOKUPで検索する範囲を列全体としていますが、見出し行があったり、データが記載されている行が限定されている場合は、A2:B100など範囲を限られると良いでしょう。 以上が#2で回答した数式の説明です。 なおもしかしたら、「検索の型」「FALSE」など、上記の説明ではお分かりにならない部分もあるかもしれませんが、それらについてはここでご説明するよりも、ヘルプ→Microsoft Excel ヘルプ で「IF」「VLOOKUP」で検索されると、参考例付きで詳しく解説してありますので、そちらを御覧になった方が分かりやすいかと思います。
お礼
有難う御座いました。 表示位置もアレンジできました。
- imogasi
- ベストアンサー率27% (4737/17069)
>英数字を抽出する方法 「抽出」するというのは、誤解を与える表現です。内容は「検索」に当たるようです・ >英数字のデータベース データベースという大げさな言葉を使うから、誤解が生じます。データでよいでしょう。検索する表(商品コードと商品名の対応表のようなもの)はすでに作ってあるようですね。 >、「0A」というデータベースにあるデータは「10」という数字に該当 例としては適当ではないのでは。Aは16進では10なので、関連を疑ったりする。例は5つぐらいは挙げること。 質問の元になる仕事の内容を隠すために判りにくくなってませんか。 ●ある文字列をセルに入力すると、となりのセル等に、対応した文字列が出るようにするのは、VLOOKUP関数のFALSE型です。 商品コードを入力すると、商品名が現れて、わかりやすくなるような例です。OKWEBにもしょっちゅう質問が出ます。 >プルダウンなどで選択すると データ(たとえば商品の数)が膨大だと(30までぐらいが限度か)、プルダウンに出しても、スクロールすること探すことが大変で、普通は使いません。というより、多段式で使います。 たとえば県を指定すると、県内の市区町村だけが出て、市を指定すると、その中の町字だけを出すというものです。 OKWEBでも時々質問があります。入力規則、検索、多段、コンボボックスなど1-2個組で照会してみてください。 ただし3段を超えると、回答を見ても、すぐ理解できる人は優秀な方と思いますが。 どういう風に「段」を組む(構成する)のがよいか、考えることこそ難しく 大切で、やりがいのあるところです。 >プログラム(?)が もちろんエクセルVBAでできますが、コンボがコントロールという部品 の扱いになるのですが、経験はありますか。
お礼
回答有難う御座いました。 質問の仕方が悪く申し訳ありません。 ご回答いただいた内容についてちょっと私には難しく♯1の回答で解決できそうです。
- oresama
- ベストアンサー率25% (45/179)
>A=Bという英数字の答えをAと入力したらB 1:リストの準備 Aの候補をG列、それぞれ対応する答えであるBをH列にして 縦の一覧表形式のリストを作成します。 (既にリストがある場合は、G、HをA、BとかC、Dとかに置換してください) 2:候補の入力の仕掛け 候補(A)を入力したいセル(ここではA1とします)に 【データ】→【入力規則】→【設定】タブで 入力値を「リスト」に選択。 『元の値』で=$G$1:$G$5と選択(Aの候補が5個の場合) これで、 >データベースにある英数字を入力又はプルダウンなどで選択 が可能になります。 3:答えを反映する仕掛け B(答え)を返すセル(ここではB1とします)に =VLOOKUP(A1,$G$1:$H$5,2,0)と入力 これで、 >答えとなる英数字が他のセルにでる が可能になります。
お礼
有難う御座いました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 最初に、データベースというのは、何を指すのですか? Access? MySQL? Oracle? Odbc で作ったExcel用のデータベース? それとも、Excelのデータテーブル?、それとも、リスト? 1. >(例えば、「0A」というデータベースにあるデータは「10」という数字に該当) 英数字って、16進のこと? 2. >答えとなる英数字が他のセルにでるようにしたいです。 その16進?に対して、どういう結果の答えなのですか? おっしゃっている内容が、よく理解できないのです。簡単な表などイメージできるようにしてほしいのです。
補足
わかりづらくて申し訳ありません。 データベースと書きましたが、実際には単にエクセルのデータテーブルを想定してます。 英数字とは、数桁の固有の英数字で文字列と同じことになります。 やりたいことは、単にA=Bという英数字の答えをAと入力したらBと答えが出るようにしたいのです。データ量が少なければ単にデータを見て答えを入力すればよいのですが、データ量が膨大なので、いちいちデータベースを探すのが面倒なので何か簡単に答えが出るようにできないかと考えてます。
お礼
有難う御座いました。ほぼ望みどおりとなりそうです。 ところで、配置などをアレンジしたいので、「=IF(A1="","",VLOOKUP(A1,Sheet1!A:B,2,FALSE))」の関数の意味についてご教授願いたいのですが・・・。