• 締切済み

エクセルでの自動入力方法

エクセル2003を使用しています。 2シートのブックを使用しており、 シート1:売上一覧(コンボボックスでシート2から品名を選択) シート2:品名と価格の表       A1     B1  品名 いちご    50円      ばなな   100円        ・     ・ となっています。 シート1のコンボボックスで いちごを選択したら、 いちごの隣のセルに価格を自動入力させたいと思っています。 どのようにしたらいいでしょうか? イメージはアクセスの Me.価格=Me.品名.Column(1)ですが、エクセルが解りません。 よろしくお願いいたします。

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

#4 は [表示]-[ツールバー]-[コントロール ツールボックス] から シートに配置したコンボボックスの話です。 似たようなものに、[表示]-[ツールバー]-[フォーム] からもコンボ ボックスを配置できるのですが、こちらではありません。 この前提で解説します。 #4 の前半部分のコード Private Sub Worksheet_Activate()   'シート2:品名と価格の表からデータをコンボボックスへ   'セットします。このとき品名と価格の両方のセルアドレス   'を指定しておきます。   Me.ComboBox1.ListFillRange = "Sheet2!A1:B10" End Sub はコンボボックスのリストとなるデータ範囲を定義しています。 コンボボックスが20個あるなら、20個分定義しなければなりません。 こんな感じ。 Private Sub Worksheet_Activate()   Dim strDATA As String      'コンボボックスのリストとなるデータ範囲   strDATA = "Sheet2!A1:B10"        Me.ComboBox1.ListFillRange = strDATA   Me.ComboBox2.ListFillRange = strDATA   Me.ComboBox3.ListFillRange = strDATA   '以下対象となるコンボボックス全てに End Sub #4 の後半部分のコード Private Sub ComboBox1_Change()   'コンボボックスのあるセルよりひとつ横のセルに価格を表示   With Me.ComboBox1    .TopLeftCell.Offset(0, 1).Value = .Column(1)   End With End Sub の ComboBox1 はコンボボックスの名前により書き換えます。 20個のコンボボックスがあるのであれば、上記コードを20個分書か なければなりません。 とまあ、コンボボックスの個数が増えると面倒臭い方法ですが こんな方法もあるよ、、ということで。 以下は余談です。 補足すると、コンボボックスに複数列のデータをセットした場合、 ColumnCount プロパティーを設定しないと最初の 1 列しか表示 されません。しかし、その他の列データも存在はしていますので、 MsgBox ComboBox1.Column(1)'<--この場合2列目のデータ のように取り出すことが可能です。このテクニックはコンボ ボックスの選択結果から Lookup系の関数などでデータを検索する 処理を省略できるため、データ件数が多い場合に有効です。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

こんにちは。KenKen_SP です。 こんな感じでできます。 'シート1のシートモジュール ------------------------------- Private Sub Worksheet_Activate()   'シート2:品名と価格の表からデータをコンボボックスへ   'セットします。このとき品名と価格の両方のセルアドレス   'を指定しておきます。   Me.ComboBox1.ListFillRange = "Sheet2!A1:B10" End Sub Private Sub ComboBox1_Change()   'コンボボックスのあるセルよりひとつ横のセルに価格を表示   With Me.ComboBox1     .TopLeftCell.Offset(0, 1).Value = .Column(1)   End With End Sub

ichigobana
質問者

お礼

ご回答ありがとうございました! イメージはまったく教えていただいたものです。 モジュールをシート1に貼り付けて実行しましたが、 できませんでした。。 シート1にはコンボボックスが20行ありコンボボックス名も1~20と並んでいる訳ではありませんでした。。 モジュールは、Me.ComboBox1ですが、全てのComboBoxにあてはまるのでしょうか? どうぞ宜しくお願いいたします!!!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

Sheet2のA1:B3に りんご 20 バナナ 30 ぶどう 15 とあるとする。 入力するシートSheet1に品名と価格のデータもあれば、エクセルでは入力規則ーリストを使いSheet1のB1に =IF(A1="","",VLOOKUP(A1,Sheet2!$A$1:$B$3,2,FALSE))と入れて、A列のデータ入力最終行まで式を複写しておけばよい。 (この場合番地に$が必要に注意。かつIF(A1="","",・・の部分も必要) しかし質問のように、別シートSheet2のテーブルを入力規則で番地参照できないため、工夫が要る。その方法は Sheet2のA列の品名の範囲を「挿入」「名前」「定義」で「果物」と名付ける。 Sheet1でA1:A30とか入力範囲を範囲指定し、データ-入力規則で 入力値の種類を「リスト」、元の値を「=果物」とする。(=が必要に注意) するとA1でクリックするとドロップダウンが現れるのでクリックして選ぶ。 するとVLOOKUPが働いてB列に単価が現れる。 B列の式はB1に =IF(A1="","",VLOOKUP(A1,Sheet2!$A$1:$B$3,2,FALSE)) をいれB2以下に式を複写する。

  • meron_
  • ベストアンサー率40% (51/127)
回答No.2

数式は#1の回答者さんのVlookup関数で実現できると思います。 質問者さんがビギナーか らエキスパートかわかりませんが、 分かりやすい説明のリンクを下記にのせときます。 http://homepage1.nifty.com/kenzo30/ex_kisotyu/ex_ks_tyukyu9_9_4.htm#検索/行列関数(VLOOKUP関数) あとはオートフィルで下方向にコピーして下さい。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/nyuryoku.htm#filsuusiki ちなみにシート2の価格に「円」がなくてもOKです。 シート1のB列の表示形式をユーザー定義で「@"円"」と入力してみて下さい。 詳しくは↓ここを参考にしてみて下さい。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/ex-q-a/q_h_kesk/

ichigobana
質問者

お礼

お返事が遅くなりましてすみませんでした。 ご回答どうもありがとうございました!! VLOOKUPを使用したのですが、 コンボボックスのセルの選択方法がうまくいきませんでした。。 説明が間違えておりまして、 セルA1は、A2とセルの結合をしていました・・。 結合したセルの上にコンボボックスを置いています。 VLOOKUP(B1,SHEET2!A1:B5,2,FALSE)としましたが ダメでした。。 この場合はコンボボックスをどう選択したらいいのでしょうか・・。

  • hitosa
  • ベストアンサー率21% (6/28)
回答No.1

コンボボックスのセル=A2 品名価格の範囲=A2:B5 =vloolup(A2,SHEET2!A2:B5,2,FALSE) でいかがでしょうか??

ichigobana
質問者

お礼

お返事が遅くなりましてすみませんでした。 教えていただいたVLOOKUPを使用したのですが、 コンボボックスのセルをうまく選択できませんでした。 説明が間違えておりまして、 セルA1は、A2とセルの結合をしていました・・。 結合したセルの上にコンボボックスを置いています。 この場合はコンボボックスをどう選択したらいいのでしょうか・・。

関連するQ&A

  • セル結合のコンボボックスの選択方法

    エクセル2003を使用しています。 2シートのブックを使用しており、 シート1:売上一覧(コンボボックスでシート2から品名を選択) シート2:品名と価格の表       A1     B1  品名 いちご    50円      ばなな   100円        ・     ・ となっています。 シート1のコンボボックスで いちごを選択したら、 いちごの隣のセルに価格を自動入力させたいと思っています。 シート1のコンボボックスは、20個あり、 コンボボックス1は、A1A2B1B2セルを結合して 結合セル一杯にコンボボックスを1つ作成しています。 どのようにしたらいいでしょうか? VLOOKUP関数を教えていただきましたが、 よろしくお願いいたします。

  • エクセルの入力規則にかわるもの

    いつも大変お世話になっております。 エクセルの入力規則をよく作成し使用していますが、表示か8個までで8個以上は▼などで選択していますが、できれば、例えば、20行ある場合20行表示させたり、50行ある時は20行くらいずつ表示をさせたいです。 自分なりに調べたら、フォームコントロールやコンボボックスなどがでてきました。ですがイマイチやり方がわかりません。 やりたいことは、シート2に入力規則のリスト用に品名など名前を付けて、シート1のセルA3に、入力規則→リスト→名前、など登録してあります。シート1のセルA3で選択するときに、シート2で【名前】と登録したものがでます、シート1のセルA3を選択した際に名前がすべて出したいです。ほかには、【品名 1】と【品名 2】もシート1の決まったセルに半分くらいずつ表示させ選択したら選択したものが表示されたいです。 説明が上手くなくすみません。 フォームコントロールなどでできるようでしたら、ご教授お願い致します。

  • エクセルのコマンドボックスを初期値に戻す方法を教えてください。

    エクセルのコンボボックスに初期値を表示する方法を教えてください。 セル A1に "選んでください"    A2に りんご    A3に ばなな とあって、コンボボックスで「りんご」を選択すると  セルB1に 2 、「ばなな」を選択すると セルB1に 3 が返されるようにしています。 コマンドボタンを押すと、直近で何が選択されていても、 コンボボックスには 「選んでください」 セルB1には 1 が返されるようにしたいのですが、どうしたらいいでしょうか。  エクセルの ツール → ユーザー設定 → ツールバー → フォーム から 持って来たコンボボックスには 「ドロップ1」という名前がついています。 また、コマンドボタンは 同様にエクセルの ツール → ユーザー設定 → ツールバー → フォーム から 持ってきており、「ボタン1」という名前がついています。

  • エクセルでの質問です

    毎度お世話になっております。 エクセルで下記のような事は出来ますでしょうか? シート1に品名、数量が記載されておりますがシート2に抽出された結果のみ表示する 例)シート1    りんご 100    みかん 200    バナナ 200    りんご 200    バナナ 300    いちご 200 シート2(結果表示)     りんご 300     みかん 200     バナナ 500     いちご 200 と、それぞれの合計数量を抽出結果として表示して管理を行いたいと思ってます。 教えてください

  • Excel VBA コンボボックスについて

    はじめまして、エクセルVBAの超初心者です。 コンボボックスを使ってマクロを組みたいのですが、どうしてで良いか分からず教えていただければと思います。 エクセルのシートに下のようなデータがあるとします A       B りんご     あおもり りんご     ながの みかん     わかやま バナナ     フィリピン コンボボックス1にAセルを重複しないようにセットして コンボボックス2に1で選択されたものをセットしたいのですが。 プロパティのListFillRangeでAの範囲を選択しても、重複してしまい、それからどうして良いのかわかりません。 どなたか教えて頂けませんか?

  • Excel ユーザーフォームでコンボボックスを使用してデータ入力

    Excelのユーザーフォームでコンボボックスを使用して、シートのデータを表示しています。 コンボボックス:ComboBox1 テキストボックス1-3:TextBox1-3 コンボボックスのRowSource:シート名!A2:C100 コンボボックスの変更時の動作: Me!TextBox1.Value = ComboBox1.Value とここまではできたんですが、テキストボックス2にシートのB列の値を、テキストボックス3にシートのC列の値を入れたいのですが、 どのようにしたらいいのでしょうか?

  • Excel VBA

    Excelのコンボボックスについての質問です。 sheet(1)のA2~A20までコンボボックスに入る選択肢が入っています。 フォーム1のコンボボックス1にその選択肢を入れたいのですが、なるべく短いコードを教えていただきたいのですが…。 ちなみに私の知っているコードは コンボボックス1.Additem Range("シート1!A2") コンボボックス1.Additem Range("シート1!A3")      ・      ・      ・ という感じです。 どうかよろしくお願いいたします。

  • エクセルでの入力規則と自動入力について

    質問の前に検索をしてみたのですが、 似たようなものが見つからなかったので、質問させてもらいます。 シート2に名前→定義で「登録者名」と作り シート1での入力を入力規則を使い、リスト(コンボボックス) を設定しました。 シート2では 登録者名 会員番号 AAA  1234 BBB  5678 CCC  9101 DDD  1112 と名前の横のセルには会員番号を作っています。 そこで質問ですが、 シート1で登録者名を入力規則のリスト(コンボBOX) で選択して入力した場合、 隣のセルに自動で会員番号が表示できるような関数などは ないでしょうか? VBAなどはできないので、できれば関数でやりたいと思います。 【シート1】    A      B 1 AAA ▼   1234(←この1234を自動で表示させたい) 2     ▼ 3     ▼ 説明不足かも知れませんが教えてください。 よろしくお願いします。 エクセル2003です。

  • エクセルで2段階コンボボックスを作成

    エクセルのシート上にコンボボックスを2つ作成して Aのコンボボックスの内容を選択するとBのコンボボックスの値が変わるというものを作成したいです。 エクセルのプルダウンで最初は考えていましたが、プルダウンだと三角の矢印が常に表示されない為あきらめました。 なのでコンボボックスの作成の仕方を教えて下さい。 例として野菜とくだものをあげます コンボボックスAで選択するもの→ 野菜、くだもの コンボボックスBで選択するもの→  【野菜の場合】キャベツ、にんじん、トマト 【くだものの場合」バナナ、りんご、みかん 以上です。よろしくお願いいたします。

  • エクセルでの集計に関して

    こんにちは。いつもお世話になっております。 例えばですが、以下のようなCVSのデータがあります。 (エクセルで開けます。) 昇順 降順に変更可能です。 これが、何週間分かあり、タブがあって日にちごとに見れますが、 30件ほどの品目の、200件ほどのデータが50件ずつにのみ表示されます。 4/1分データ    品名   売り上げ数   りんご1  100    りんご2  200    みかん1  300    みかん2   400    バナナ1  500             次の50件→ -------------------------------------------- 4/2分データ    品名   売り上げ数   りんご1  1000    りんご2  2000    みかん1  3000    みかん2   4000    バナナ1  5000   バナナ2  6000   アボガド  7000   いちご   8000     次の50件→      ↓続く これを、エクセルで下記のようにしたいのです。 ********************************************** ID  品名    4/1分集計 4/2集計  4/3集計  4/4集計  4/4集計~~ A   りんご1  100   1000    300 B   りんご2  200   2000    400  C   みかん1  300   3000    500 D  みかん2   400   4000    600 E   バナナ1  500    5000    700 D  バナナ2        6000    800 E  アボガド       7000    900 F  いちご       8000    1000 日にちによって当然、新たな項目、アボガドやいちごがあったりします。みなさんでしたら、最速で一番簡単に行う為にどうしますか? ちょっといそいでてお知恵をどなたか下さい! ご教授下さいますようお願い致します。

専門家に質問してみよう