- PR -

Excelでのドロップダウンリストについて

投稿者投稿内容
てーらーめいど
会議室デビュー日: 2007/04/24
投稿数: 17
投稿日時: 2007-05-16 16:30
ググってみたのですが情報が得られませんでしたので助けて下さい。

Excelのセルをリストから選択できるようにしたのですが、そのセルに対して
数式でリスト内の値を設定するにはどのような式を書けば良いでしょうか?

よろしくお願いします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-05-16 16:52
ドロップダウンリストというのは、入力規制のドロップダウンリストですか?
「そのセルに対して数式でリスト内の値を設定する」の意味するところが分かりません。
ほかのセルから、そのセルの値を書き換えたいのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-16 17:04
引用:

てーらーめいどさんの書き込み (2007-05-16 16:30) より:

Excelのセルをリストから選択できるようにしたのですが、そのセルに対して数式でリスト内の値を設定するにはどのような式を書けば良いでしょうか?


どの数式を設定したいのでしょうか?

たとえば、データの入力規制から 「元の値」 で設定された範囲にあるセルの値が適用されます。
これも "数式" に当たるわけですが、そうではなくて別の数式でしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
てーらーめいど
会議室デビュー日: 2007/04/24
投稿数: 17
投稿日時: 2007-05-16 18:04
mioさん、じゃんぬねっとさん、分かりにくい質問ですみませんでした。

ドロップダウンリストとは、入力規則のリストの事です。
やりたい事は、例えば列Aを1〜26の数値から選択するリストにします。
何も選択していなければ、空欄になっています。
列Bに対しアルファベットを入力したら、列Aに対応する数値を表示します。

実際はこのような単純な事ではないのですが、やりたい事は他のセルの入力によって
リストから選択する事になっているセルの値(リスト上に存在する)を自動で
設定したいのです。

こんな説明で分かって頂けたでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-16 18:30
マクロくらいしか思いつきませんでした。

コード:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        If Target.Row = 1 Then
            If Target.Column = 1 Then
                Call UpdateValidationList
            End If
        End If
    End Sub

    Private Sub UpdateValidationList()
        ' どの範囲の値を設定するかを示すセルの参照を取得
        Dim xlSettingRange As Excel.Range
        Set xlSettingRange = Me.Cells(1, 1)

        ' セルに書かれた範囲を文字列で取得
        Dim stFormula As String
        stFormula = CStr(xlSettingRange.Value)

        ' DropDownList にするセルの参照を取得
        Dim xlListRange As Excel.Range
        Set xlListRange = Me.Cells(1, 2)

        ' 入力規則を設定する
        With xlListRange.Validation
            Call .Delete
            Call .Add(xlValidateList, xlValidAlertStop, xlBetween, stFormula)
            .IgnoreBlank = True
            .InCellDropdown = True
        End With
    End Sub


A1 のセルに範囲を指定... 例 :「'=$A$2:$A$5」 など。
その右隣にあるセルにその範囲にあるセルの値が入力規則として適用されます。

これを、

引用:

列Bに対しアルファベットを入力したら、列Aに対応する数値を表示します。


に置き換えれば良いと思いますが、詳細がわからないのでサンプル程度に留めて頂ければ幸いです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
てーらーめいど
会議室デビュー日: 2007/04/24
投稿数: 17
投稿日時: 2007-05-16 18:55
じゃんぬねっとさん、詳細なサンプルありがとうございます!

やはりマクロを組まなければできないですか。

セルに数式で
=IF(・・・,リストの値n,リストの値m)
みたいに楽にできないかと思ったのですが。。。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-05-16 19:50
ほかのセルの内容を変えることは、マクロにしかできないですね。
てーらーめいど
会議室デビュー日: 2007/04/24
投稿数: 17
投稿日時: 2007-05-17 10:09
> ほかのセルの内容を変えることは、マクロにしかできないですね。

そうだったんですか。勉強になりました。
では、リストになっているセル自身に対して数式でリストの値を設定する事は可能でしょうか?

=IF(隣のセルの値がXXXだったら,リストの値n,リストの値m)

スキルアップ/キャリアアップ(JOB@IT)