• ベストアンサー

excelでリストボックスで選択した値に定められた値を返す

excel2000で計算シートを作っています リストボックスで会社名をえらぶと 例:A社 B社 C社 ・セルC2に、A社なら1000 B社なら1200 C社なら800 とあらかじめ定められた値を返す 関数で、値を返すことはできるのですが リストボックスを範囲として指定できないのでしょうか? また、上記をVBAを使わずに、設定することは可能でしょうか? 宜しくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。#3 で回答した者です。 >>リストボックス(フォームツールバーよりドラッグ) >この部分がわかりません。リストボックスを作るということですか? リストボックスが出来ていればよいです。ただ、それが何かが分からないので、フォームと確認させるために書きました。他にコントロールツールというものもあります。 >社名と数値を別表作成しました >入力範囲に社名部分を選択 >リンク範囲に数値部分を選択 >まで行ないました その内容からすると、フォームのリストボックスだと信じます。 リストボックスの中を選択すると、数字が「リンク範囲(正しくは、リンクするセル)」に出力されますね。そこで、違っていませんか? 社名と数値を別表作成 それが、以下だと思ってください。(場所は、シートが違うのでしたら、シートの違う場所を指定することになります)  H  I A社 1000 B社 1200 C社 800 そのリストの社名の列を、リストボックスの[コントロールの書式設定]の[コントロール(タブ)]の中で、 「入力範囲」に指定します。 「リンクするセル」は、任意の場所、私の例では、G1 にしましたが、どこでもよいです。 >=INDEX($H$1:$I$3,G1,2) はどことどこを選択しているのでしょうか ですから、C2 = INDEX(社名と数値を別表,リンクするセル,2) という式を入れてあげれば、出るはずです。

siozakiyuk
質問者

お礼

有難うございます 無事できました リストボックスっていろいろあるんですね また、何かありましたら宜しくお願いいたします

その他の回答 (5)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

#01、02です >フォームのリストボックスはセルに反映されないと思うのですが・・・ →リストボックスであれば当然VBAでセルに書き込むのを前提にしています。わざわざ「フォームのリストボックス」と書いたのはsiozakiyukさんの言われる「リストボックス」が何か分からないので、可能性がある「リスト」がつくものを列挙しただけです。 おそらく「リストボックス」は質問の本質ではないと思いますが、siozakiyukさんは「リストボックス」という言葉をどのような意味で使用していますか? この言葉のせいで回答者は混乱してしまっていますよ。 それはさておいて、質問の意図はA1に入力された会社名によって、C2の関数式が参照する範囲を変更したいということではありませんか? 例えば、A社ならC2セルの式は =SUM(A10:A20)、B社なら =SUM(B10:B20)、C社なら =SUM(C10:C20) という具合にです。 もしそうであれば#02で回答した「挿入」→「名前」→「定義」で、A10:A20の範囲に「A社」、B10:B20の範囲に「B社」、C10:C20の範囲に「C社」という名前をつければ良いのです。C2の式は =SUM(INDIRECT(A1)) で良いです。 そうすればA1にA社が入力されたら、C2は=SUM(A10:A20)と同じ答えになります。(A1がB社なら=SUM(B10:B20)と同じになる) #02でもそのつもりで回答したのですが、意図が伝えきれなかったのならごめんなさい。なお、文言にこだわるような補足回答ならもう不要です。

siozakiyuk
質問者

お礼

回答ありがとうございます 別のやり方ですが、何とかできました また、何かありましたら宜しくお願いいたします

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

A列へ会社名A社など入れるとき、A列に1000を返すことは、VBAを使わないと、絶対できません。 ーーー 別列B列に出すとします。 ^^^ 会社ー数字の対応表を D1:E3に A社 1000 B社 2000 C社 3000 とつくり ーー A列を範囲指定して データー入力規則ーリストーD1:D3 ーー B1に=IF(A1="","",VLOOKUP(A1,$D$1:$E$3,2,FALSE)) と入れて、下方向に(リストボックスで会社命を入力するセル範囲)式を複写する。 結果 A列  B列 A社 1000 B社 2000 C社 3000 会社はリストボックスで選ぶ限り、該当なしは無いと思うので その手当ては不要か。

siozakiyuk
質問者

お礼

回答ありがとうございます 別のやり方ですが、何とかできました また、何か借りましたら宜しくお願いいたします

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >リストボックスを範囲として指定できないのでしょうか? この意味が分かりません。どうするというのでしょうか? リストボックスは、オブジェクトで、オブジェクト自体を、関数などの引数に出来るはずもありません。 VBAを使わない方法では、リストボックス(フォーム側に限ります)の「リンクするセル」を、どこかひとつ設けて、そのセルを、INDEX関数などで出力するかと思います。 例: リストボックス(フォームツールバーよりドラッグ) 入力範囲:$H$1:$H$3  H  I A社 1000 B社 1200 C社 800 リンクするセル $G$1 C2: =INDEX($H$1:$I$3,G1,2) ただし、Excel2007 では、保証しません。

siozakiyuk
質問者

お礼

こんにちは。 リストボックスの値を範囲として設定できれば らくだと思ったのですが、できないようですね(T-T) >リストボックス(フォームツールバーよりドラッグ) この部分がわかりません。リストボックスを作るということですか? それとも、作ったものをどこかにドラッグすると言うことでしょうか? 社名と数値を別表作成しました 入力範囲に社名部分を選択 リンク範囲に数値部分を選択 まで行ないました >リンクするセル $G$1 Gはどこに当たるのでしょうか? >=INDEX($H$1:$I$3,G1,2) はどことどこを選択しているのでしょうか EXCEL操作は、特に勉強したわけではなく、業務中に覚えたものですか ら 根本がわかっていないのかも知れませんね。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。 >リストボックスで会社名をえらぶと フォームのリストボックスであれ、入力規則のリストであれA1セルにいずれの会社名が選択されたとします 予め1000、1200、800と入力したセルを「挿入」→「名前」→「定義」でそれぞれ「A社」「B社」「C社」という名前で定義しておきます。 C2セルに =INDIRECT(A1) と入力すると、A1に入力された会社名によってC2には1000、1200、800のいずれかが表示されるようになります。 でも会社が3つくらいならまだ良いのですが、会社数が増えるといちいち名前定義するのが大変になります。変更があった時のメンテナンスも大変になります。個人的には、後々のメンテを考えると関数式の方が楽だと思います。

siozakiyuk
質問者

お礼

>フォームのリストボックスであれ、入力規則のリストであれA1セルにいずれの会社名が選択されたとします フォームのリストボックスはセルに反映されないと思うのですが・・・ リストボックスで選択された値を、セルに反映させる手段があるのでしょうか・・・ それなら、事は簡単なのですが・・・

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

同じような質問が続きますね http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=3151932 >リストボックスを範囲として指定できないのでしょうか? できないと思いますよ。関数式を入れておくか、VBAでワークシートのChangeイベントを利用するかのいずれかの方法になります なぜ関数式ではダメなのでしょうか?

siozakiyuk
質問者

補足

>なぜ関数式ではダメなのでしょうか? 関数では「だめ」ではなく 「値を返す関数はわかっている」 が 論理式なり、数式なりを入れるときに範囲を選択しますよね? その際に、セル ではなく リストボックスの値を選択できるのか? ということです

関連するQ&A

  • フォームのリストボックスに値を表示させたい

    VBA フォームのリストボックスに値を表示させたい A1→aaa A2→bbb リストボックスに上記の値を表示させたいなら、 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!A1:A2" End Sub で出来ますが、シート上のセルで表示する値を指定するのではなく、VBA上で、リストボックスに表示させる値を指定したいのです。 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "aaa,bbb" End Sub を実行すると、VBA実行時エラー380になってしまいます。 UserForm1.ListBox1.RowSource = "aaa;bbb" もダメでした。 ご回答よろしくお願いします。

  • エクセル リストボックスをボタンで選択するマクロ。

    VBA初心者なので教えていただけるとありがたいです。 現在、sheet1にリストボックスを貼り付けています。 そのリストボックスで選択した値を、sheet2のA1セルに貼り付けるようなマクロを作ってみました。 リストボックスのリストは、下のような感じになっています。 空白 ああああ いいいい うううう これとは別にボタンを作成し、ボタンを押すとこのリストボックスの空白(一番上のリスト)を選択するようにしたいのですが、このようなことはできるのでしょうか? なぜこのようなことがしたいのかは、説明が長くなりそうなので省略させていただきます。 どなたか教えていただけるとありがたいです。

  • エクセル 2003 リストボックス複数選択後の処理

    いつもありがとうございます。 先日もご質問させていただきました。 エクセル VBA 初心者で困っております。 誠に申し訳ありませんが、ご教授をよろしくお願いします。 (sheet2)のデータをリストボックス(sheet1)で複数の値を選択し、 オートフィルタ-に反映させて抽出し、 その後、セルB1以下(sheet1)に入力した値と貼り付けた別のシート(sheet3)で数値1×数値2を掛け算し、数値3にそれぞれ出すのが目的です。 sheet1 リストボックスで複数選択された値を、A1より下に貼り付けていく それぞれB列に数値を入れる 例.(リストボックス選択後)     A     B 1  製品A  5(入力) 2  製品B  3(入力) 3  製品C 2(入力) ・ ・ ・ コマンドボタン1を押すと実行 sheet2(今後増える可能性あり)      製品名      数値1    数値2   数値3 1 製品C       2           2 製品A       2 3 製品E       1 4 製品B       4 5 製品F       3 6 製品D       5 ・ ・ ・ sheet3(貼付先) 実行結果   製品名      数値1    数値2   数値3         1 製品A        2        5      10 2 製品B        4        3      12 3 製品C   2 2 4 以前の質問では、1つずつでの入力で思ったとおりの結果になりました。 今回は複数です。 初心者で、まだ手を出す部分ではないとは思いますが、よろしくお願い致します。

  • excelでVBAでユーザーフォームのリストBOX

    下記VBAの作成の仕方を教えていただけないでしょうか。 やりたいこと (1)sheet2のA1セル~A5セルまでの間の間をユーザーフォームのリストボックスに登録する (2)sheet1のA1セルをクリックすると、ユーザーフォームが起動し、任意のリストをクリックすると、 その値がA1セルに格納され。ユーザーフォームが終了する。 ※コマンドボタンは使わずにお願いします。なおexcel2000です。

  • リストのどの値も選択しないようにする &リストの文

    エクセルのシート上にリストボックスがあるのですが、 vbaで、リストのどの値も選択しないようにするコードと、 vbaでリストの文字を選択するコード、 (例えば「a」を選択中にする)方法を教えていただけますか?

  • リストボックスで選択した項目を削除するには

    Excel2003を使用しています。 ユーザフォームのリストボックスには"Sheet1!A1:C10"が表示されるようになっています。 Private Sub UserForm_Initialize()  UserForm1.ListBox1.ColumnCount = 3  UserForm1.ListBox1.RowSource = "Sheet1!A1:C10" End Sub たとえばリストボックス上で3行目(A3:C3)を選択して、削除ボタンをクリックすれば選択された値が表示から消えて、セル上の値も削除されるようにしたいのです。 できれば削除されると同時に4行目(A4:C4)以降の値が上にスライドされるようにできればいいのですが、まだまだ理解できない部分が多くて自分では解決できませんでした。 ご存知の方がいらっしゃいましたらご教授頂けないでしょうか。 宜しくお願い致します。

  • リストボックスの値取得方法について

    VBAでリストボックスを使用しています。リストボックスの中には、A,B,C,D,Eと表示されています(カンマは行とします。 つまりリストボックスには5行表示されています)。選択はされていない状態です。この状態でボタンを押すことにより ループで各行の値を取得したいと思っています。listcountを利用してlistcountの数までループをまわし、各行の値を 取得したいです。値というのは、A,B,C,D,Eです。この値を配列なり変数なりにいれたいのです。 どのリストボックスのプロパティを利用すれば、選択されていないリストボックスの各値を取得することができるでしょうか?

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

    初めまして。VBA初心者です。 コンボボックスを使った計算書を作成しているのですがうまくいきません。 例えばコンボボックスのリストに甲、乙、丙と3つのリストがあり、 甲を選ぶとA1:A10のセルにB1:B10のセルの中身が上書きされ、乙を選ぶとA1:A10にC1:C10が上書きされる・・・というようなものを作りたいのですが・・・。 VBAの本やいろんなサイトを参考にしたのですがうまくいきません。 ChangingCellやReplaceを使ってみたのですがエラーになります。 どなたかよきアドバイスをお願いいたします。

  • エクセル コンボボックス 値選択後フォーカス移動

    はじめまして。 エクセルのアクティブXのコンボボックスを直接ワークシートに貼り付けて操作していますが、どうしても解決出来ない問題があります。 このコンボボックスで値を選択した後、フォーカスを別のセルに移動すると、一瞬、前の値が表示され、その後直前に選択した値に戻ります。 例えば、A、B、Cというリストがあり、Aを選択し、その後、Bを選択して、フォーカスを別のセルに移動すると、コンボボックスにAが一緒表示されます。でも、すぐにBに変わるのですが、Aのバックグラウンドを赤しているため、かなり、そのチラツキが目立ちます。 どなたか解決方法を教えてください。

  • Excelの入力規則でリストの値を選択できません。

    Excelの入力規則でリストの値を選択できません。 環境:WinXP Excel2003 表内のセルに入力規則でリストを設定しました。 リストは場所指定ではなく、入力規則タブのリスト欄にカンマで区切って直接値を入力しています。 リストの内容はメールアドレス用のドメインです。 ("@docomo.ne.jp,@softbank.ne.jp"というふうにドメインをリストにしています) 表は下記のような作りになっています。 A1セル:アカウント 直接入力 A2セル:ドメイン ドロップダウンリストから選択 ドロップダウンリストは正常に表示されるのですが、値を選択してもセルには何も表示されません。 試しにリストの値を"a,b,c"に変更したら正常に選択・表示されました。 ※添付画像のような状態から値を選択してもセルには何も表示されません 値が選択できないのは何が原因でしょうか? ご教示宜しくお願い致します。

専門家に質問してみよう