[[20180621162234]] 『所属部署を入力したら、入力をしたセルに該当者が』(tomiy) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『所属部署を入力したら、入力をしたセルに該当者がドロップダウンで表示』(tomiy)

セルに所属部署名を入力したら、別シートにある名簿から該当する社員名を入力をしたセルにドロップダウンリスト表示させて選択可能にしたいです

イメージでは日本語入力をしてenterを押したら、選択肢が表示される表現が近いです

[参加者シート]
 A    B    C    D    E    F・・・
参加者1 参加者2 参加者3 参加者4 参加者5 参加者6 参加者15まで有ります

[名簿シート]
  A    B       C    D
所属部署  氏名    社員番号  役職
製造   フルネーム
製造   フルネーム
 ・
 ・
物流
物流
 ・
 ・
管理
管理
 ・
 ・
現在、名簿シートは仮の状態ですので検索しやすい順のご提案があれば訂正をすることは可能です
また、所属部署は一件ごとに入力されていないといけない制約はありませんので、こちらも検索しやすい表示があれば訂正をすることは可能です

参加者の左側に一列入れると簡単なのは承知しておりますが、全体に右に長くなっている表の為、極力列を増やさずにと言うのがリクエストです

よろしくお願い致します

< 使用 Excel:Excel2010、使用 OS:Windows7 >


http://www4.synapse.ne.jp/yone/excel2010/excel2010_nyukisoku3.html

↑この辺をみたら出来ませんでしょうか?

(まっつわん) 2018/06/21(木) 17:22


ご参照ありがとうございます

帳票が右に長くなり入力する為のスクロール作業を減らしたいので、別途列を増やすのを避ける術は無いかと悩んでおります

入力をしたセル内での表示が出来ると、参加者を入力できる列分(15人)のみで済むのではと思っており模索して掲載させていただきました

ご参照戴いた他の記事にありましたら、探せず申し訳ありませんでした
(tomiy) 2018/06/21(木) 18:05


入力をしたセル内での表示が出来ると、 参加者を入力できる列分(15人)のみで済むのではと思っており 模索して掲載させていただきました そのような挙動を作ることは出来ると思いますが、
入力しやすいとは思えませんので、賛同しかねますので、
考えるのはやめにしておきます。
ということで、他の方の書き込みをお待ちください。
(まっつわん) 2018/06/21(木) 18:46

ご助言ありがとうございます
他に手が無いか探してみます
(tomiy) 2018/06/22(金) 09:56

こうすれば実現出来るんじゃない?

1.E列に所属部署-氏名の列を作ってココを入力規則の対象にする。
2.所属部署毎に氏名無しのデータを作る。
3.名簿シートのデータは必ずソートされており、先頭に氏名無しのデータが来るようにする。

[名簿シート]
  A    B       C    D   E ← 入力規則の対象にする
所属部署  氏名    社員番号  役職  所属部署-氏名
製造                    製造      (数式:=A2&IF(B2<>"","-"&B2))
製造   フルネーム            製造-フルネーム
製造   フルネーム            製造-フルネーム
 ・
 ・  
物流                    物流
物流   フルネーム            物流-フルネーム
物流
 ・
(名無し) 2018/06/22(金) 10:11


というかさ、部署を選択するセルを、参加者の左に追加する必要はないと思う。

[参加者シート]
   A    B    C    D    E    F・・・
1 部署1  部署2  部署3  部署4  部署5  部署6
2 参加者1 参加者2 参加者3 参加者4 参加者5 参加者6
これではダメなの?
(名無し) 2018/06/22(金) 10:14


 名簿は所属部署ごとにソートしておくことにして、所属部署の列に「所属部署」と名前を付ける。
 氏名(という見出し)のセル(列ではない)にも氏名と名前を付ける。

 この状態で、名前入力セルに入力規則をリストで設定し元の値に

 =OFFSET(氏名,MATCH(A1,所属部署,0),,COUNTIF(所属部署,A1))

 と入力。エラーメッセージタブの
 □無効なデータが入力されたらエラーメッセージを表示する
 のチェックを外す。

 これで、入力セルに部署名を入れるとリストから名前を選択できるように
 なりませんか?

(コナミ) 2018/06/22(金) 11:06


 あ、式の中のA1は自セルのことです。
(コナミ) 2018/06/22(金) 11:07

皆様、ご教示ありがとうございます
ご意見いただいた方法を一つ一つ試してみます
上手くいったらご報告を、躓いてしまったらまたお知恵を貸していただけたら幸甚です
(tomiy) 2018/06/22(金) 17:29

 よそでも質問されてて、それはいいんですが名簿シートのレイアウトが違う模様…
 こっちは放置になるかも。
(コナミ) 2018/06/23(土) 16:50

ご意見ありがとうございます
こちらで伺ってる途中で違う手法を要求されてしまい、両方を模索しなくてはいけなくなってしまいました

こちらで戴いたご意見も試している最中ですが、ご気分を悪くなされたら申し訳ありません
(tomiy) 2018/06/25(月) 16:25


  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'シート「参加者」のシートモジュール
    'シート名「名簿」
    If Target.Count <> 1 Then Exit Sub
    Dim dic1 As Object, dic2 As Object, k As Variant, c As Range
    Set dic1 = CreateObject("Scripting.Dictionary")
    Set dic2 = CreateObject("Scripting.Dictionary")
    For Each c In Sheets("名簿").Range("A2:A" & Rows.Count).SpecialCells(2)
        dic1(c.Value) = True
        dic2(c.Value) = dic2(c.Value) & "," & c.Offset(, 1).Value
    Next c
    For Each k In dic1.keys
        If k = Target.Value Then
            With Target.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:=Mid(dic2(k), 2)
            End With
            Exit Sub
        End If
    Next k
    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=Join(dic1.keys, ",")
    End With
End Sub
(mm) 2018/06/25(月) 16:53

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.