質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.00%

  • Excel

    1222questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

Excel 2段階のプルダウンリスト(名前定義では無い)

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 242

morikawa0208

score 17

前提・実現したいこと

物件プルダウンリスト1で選んだ物件に対応して、その物件に入っている業者のみプルダウンリスト2に表示したい
・リスト1・・・物件A、物件B、物件Cの3件「物件シート」で他情報も併せて管理
・リスト2・・・業者1、業者2、業者3の3社「業者シート」で報酬計算方法などと併せて管理
→1対1ではなく、同じ物件に複数業者、業者が複数物件に入ることがある
イ![イメージ説明

名前定義では、業者シートの作りが異なり、実現したい内容と異なってました。
最悪は2段階目のリストのために「名前定義シート」を作って、そこを選ばせる。
それから入力シートに出力された業者を指定してVLOOKUPで付随情報を使うか・・・
業者が増えた時のメンテナンスが増えるので、出来れば図の3シート内で納めたいと思ってます

試したこと

ネットで探してみましたが、どこを見ても「名前定義+INDIRECT関数」で、項目選ばせて終わりの方法しか見つけられませんでした。
その物件担当者が関係ある業者だけ表示して選ばせて、それに対応した計算をさせたいので名前定義での項目の作り方では、
やりたいことが実現できませんでした。。。

書きながら思いましたが、名前定義シート作るしかないのかな・・・

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

INDIRCTを使った2段階のプルダウンリスト表示方法を知らずにVBAを使った方法を書いてしまいました。2段階のプルダウンは、INDIRCTを使う方法でもよいですね。勉強になりました。
プルダウンで業者を選んで、計算方法を自動的に表示するには、決定された物件と業者を結合し、このキーを元に、VLOOKUP(業者シートにも、物件と業者を計算式など結合した列を用意しておく)で取り出せると思いますが、如何でしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/30 19:49

    お返事が遅くなり申し訳ございません。私事でお休みしてました。

    最初にいただいたVBAも試してみたのですが、理解が足りず現状うまく動かせておりません・・・
    たしかにINDIRECT関数でやりたいことは実現できるんですが、業者が増えた時に2シート追加しないといけないのが引っかかってました(業者シートとINDIRECT用のシート)

    でもINDIRECT関数のほうがやってることが分かりやすいので、関数でやってみようと思います。

    私のこんな質問でVBAが組める人は本当に憧れます、日々勉強ですね!
    ご回答ありがとうございました!

    キャンセル

0

他にも方法があるかと思いましたが、私ならということでお答えします。
やはりVBAが一番簡単かと思います。

入力シートの「今回物件」列(この列には、物件シートの物件列が入力規則として設定されていることを前提にしています)で、値が変更されたら、そのタイミングで業者シートから対象となる業者名のリスト(例えば、今回物件が物件Aであれば、業者1,業者2)を対応する行のB列に設定すれば、対応する業者名がドロップダウンリストで表示されるようになります。

サンプルプログラムは以下の通りです。不明点があれば、お尋ねください。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Long

    r = Target.Row
    ' 変更されたセルがA列のセル1つだったら、
    If Target.Count = 1 Then
        If Target.Column = 1 Then
            Dim i As Integer
            Dim s As String

            ' 変更されたA列の今回物件と文字列を業者シート内の物件列(B列)からさがし、
            ' 見つかった値をカンマで繋げてsに代入する
            With Worksheets("業者シート")
                s = "入力して下さい"
                For i = 2 To 1000
                    If .Range("B" & i).value = Target.value Then
                        s = s & "," & .Range("A" & i).value
                    End If
                Next i
            End With
            ' 例えば、物件名が「物件A」の場合、変数sは次のようになる
            ' s = "入力してください,業者1,業者2"
            With Target.Worksheet.Range("B" & r)
                    ' 入力シートの対応する行のB列の入力規則にsを設定します。
                    With .Validation
                    .Delete
                    .Add xlValidateList, Formula1:=s
                End With
                ' 入力規則を設定したセルにも"入力してください"を指定しました。
                .value = "入力してください"
                ' 入力規則を設定したセルにフォーカスを移動します。
                .Select
            End With
        End If
    End If
End Sub

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.00%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    アクセス解析ツールについて

    現在、サイトにgoogleアナリティクスを設定していますが、 クライアントから追加でYahoo!アクセス解析を設定してほしいと言われました。 私は今までgoogleアナリテ

  • 解決済

    Scene BuilderでCSSファイルと画像ファイルを読み込んだが、NetBeans上で反映され...

    Scene BuilderでCSSファイル読み込んで、ボタンが平面的になるボタンを作成し、 画像をファイルから読み込んで挿入し、Scene Builderでプレビューすると↓のよ

  • 解決済

    ACCESS クエリでの一部重複?の除外方法について

    前提・実現したいこと こんにちは、質問タイトルが適格でないかもしれませんが宜しくお願いいたします。 通販事業をしており、商品の仕入から販売までのデータベースをACCESSの

  • 解決済

    Monacaでtimepickerの実装

    前提・実現したいこと MonacaでiOS/Andriod両方に対応しているアプリケーションを開発していて、アラーム機能を実装しようと思い、Monacaでtimepickerのよ

  • 解決済

    atom自動補完やり方

    これのプログラミング版になります 今いろいろ調べているのですが、atom自動補完ができません。宜しくお願い致します。 リンク内容 autocomplete-p

  • 受付中

    ER図について

    つぶやきアプリを作っているのですが、 ER図を作るとする例えばどんなものがありますか?? サンプル程度でいいので教えていただきたいです

  • 解決済

    bashでC-sを入力するとsayコマンドが実行されてしまう

    前提・実現したいこと 初めて利用します。はじめまして。 デフォルトだと、bashでC-sを入力するとロックがかかって操作できなくなるそうですが、自分の環境だとなぜかsayコマン

  • 解決済

    vb2017でexcel2016操作

    vb2017を使っています。 communityです。 excel2016を開いてセルのデータを読み込みたいと思っています。 参考にしているサイトです。 http://d.

同じタグがついた質問を見る

  • Excel

    1222questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。