【先着1,000名様!】1,000円分をプレゼント!

セルに入力した所属名を別シートにあるリスト見出しから検索し、合致した列の列(見出しより下)をドロップダウンリスト表示させたいです
段階を踏んだリストの絞り込みではなく、入力したセル内で表示させたいです
イメージでは日本語入力enterで選択候補が表示されるイメージが近いです

(ピックアップSHEET)
 A    B    C     D ・・・・
対象者1 対象者2 対象者3 対象者4 対象者は15まであります

※各対象者のセルに部署名を入力すると、その場で該当する所属者をドロップダウンリスト表示したい

(名簿SHEET)
 A   B   C
物流  調達  メンテ・・・・・部署は24個あります
●●  ●●  ●●・・・氏名がフルネームで入っています
↓ ↓   ↓・・・所属者がリストになっております


お力添えをお願い致します

A 回答 (2件)

添付画像のようなレイアウトを前提して説明させていただきます(各リストは名前の定義がされている前提です)。


一番簡単な方法は、E1セルの入力規則に「=INDIRECT(E1)」を設定することです。しかし、これだとE1セルに「メンテ」を入力して確定した後、もう一度E1セルに戻ってリストを選択する必要があります。使い勝手が悪いですが、標準的なExcelの使い方としては、これが限界ではないでしょうか。
そこで、VBAの登場ですが、それなりのスキルが必要になりますので、興味があれば次の事を試してみて下さい。

まず、E1とF1セルに入力規則でリストを設定します。その際、「無効なデータが入力されたらエラーメッセージを表示する」チェックを必ず外してください。
次に、シートモジュールに次のVBAを張り付ければ完成です。

まず、E1セルで試してみて下さい。UEHさんのご希望通りに動作すると思います。
次に、F1セルで試してみて下さい。ちょっと機能を拡張してみました。個人的にはこっちの方が便利だと思います。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo exit_sub
With Target(1)
If .Validation.Type = xlValidateList And _
.Validation.Formula1 <> "=" & .Value Then
.Validation.Modify Formula1:="=" & .Value
.Select
SendKeys "%{DOWN}"
End If
End With
exit_sub:
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$F$1" Then Exit Sub
Target.Validation.Modify Formula1:="=A1:C1"
End Sub
「セルに入力した文字と別シートリストの見出」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます!
動きを確認しましたが、思っていた通りです
重ねての質問で申し訳ありません
あとは、自身の帳票にコンバートしてみますが所属部署リストが違うシートにある場合は
Target.Validation.Modify Formula1:="=A1:C1"はシート名+セル範囲にすればよろしいでしょうか

お礼日時:2018/06/25 14:12

少しわかりにくいのですが・・・


> 入力したセル内で表示させたいです
入力した時点で、セルに設定してあった関数は壊れます。
VBAなら???ですが、普通に関数では無理があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで入力した文字列を他のセルにも自動的に入力できるようにしたいです。

エクセルで文字列を入力した場合、指定したセルにも同じ文字列が自動的に入力されるようにしたいと思っています。

調べたところ貼り付け時に形式を選択して貼り付ける「リンク貼り付け」というのがあるので試してみたんですが、
貼り付け先の空白のセルに強制的に0が入力されてしまいます。
リンク貼り付けを保持したまま空白セルを空白セルのままにすることはできないでしょうか。

よろしくお願いいたします。

Aベストアンサー

エクセルの画面から ツール→オプション→表示→ゼロ値チエックをはずす。

Qあるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように

お世話になります。

表題の通り、
あるセルに特定の文字列を打つと、
他のセルにあらかじめ決められた文字が自動入力するようにしたいです。

具体的に言うと、
(1)セル(A,1)に「キリン」と打ち込むと

   A   B   C   D
1 キリン
2
3
4

(2)1列目の B,C,Dに予め決めておいた文字が入力されるようにしたい

   A   B   C   D
1 キリン 首  長い  アフリカ
2
3
4

のです。
エクセルで可能でしょうか?
詳しい方よろしくお願いいたします!

Aベストアンサー

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A:D,3) ″
4  =VLOOKUP(A4,Sheet2!A:D,2) =VLOOKUP(A4,Sheet2!A:D,3) ″

を入れておきます。
これで出来ると思います。
エラー表示がいやな場合は、=IF(A1="","",VLOOKUP(A1,Sheet2!A:D,2)) の様にして下さい。

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A...続きを読む

Qエクセル 同じ値を探して隣の数値をコピーする

エクセルで以下の作業を簡単にする方法を教えて下さい。

Sheet1の1行目には見出しがあり、A列とB列の2行目から下にデータが入っています。(約200行)
A列     B列
田中    13
山本     8
谷口    11
鈴木    6
佐々木    9
奥村     15




Sheet2のA列1行目から下には別のデータが入っています。(約600行)
A列
太田川
山村
田中
多賀先
鈴木
奥村
幸田




Sheet2のA列のデータと完全一致するデータ(名前)をSheet1のA列から探して、同じ名前があれば、その隣のB列にある数値をSheet2のB列に貼り付ける。
見つからない場合はSheet2のB列は空欄のままです。
Sheet2
A列      B列
太田川     
山村
田中    13
多賀先
鈴木     6
奥村    15
幸田


Aベストアンサー

シート2のB2セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(Sheet1!A:A,A2)=0,"",VLOOKUP(A2,Sheet1!A:B,2,FALSE))

QEXCEL VBA データを抽出して別シートへ貼り付ける方法

お世話になります。以下の例のように
元のデータを 品名ごとの別シートに 日付順に並べて 貼り付けられるように
したいのですが、どのようにコードを組めばよいかご教授 頂けないでしょうか。



元データsheet
A列     B列    C列     D列
日付     品名        個数
2/1      りんご       50
2/13     みかん       150
3/22    りんご       75
2/10    りんご       100
3/13    みかん       120


抽出先りんごsheet
A列     B列    C列    D列
日付     品名    個数
2/1     りんご   50
2/10     りんご   100
3/22     りんご   75

よろしくお願い致します。

Aベストアンサー

VBA勉強中と云うことなので、「こんな方法もあるよ」的な回答をさせていただきます。
抽出元を抽出先にコピーして、そこから「りんご」以外を削除するロジックとなっています。
なお、抽出先のシートが存在していないとエラーになります。また、抽出対象の「りんご」が無い場合も、エラーになりますので、必要であれば、notimeさんの方で組み込んでください(勉強の一環として)。

Sub りんご()
Dim ToWs As Worksheet
Dim DifRng As Range
Set ToWs = Worksheets("抽出先りんごsheet")
Worksheets("元データsheet").Columns("A:D").Copy Destination:=ToWs.Columns("A:D")
ToWs.Columns("C").Delete
With ToWs.Range("B2:B" & Rows.Count)
Set DifRng = .Find(What:="りんご", LookIn:=xlFormulas, LookAt:=xlPart)
.ColumnDifferences(DifRng).EntireRow.Delete
End With
ToWs.Range("A:C").Sort key1:=ToWs.Range("A1"), order1:=xlAscending, Header:=xlYes
End Sub

VBA勉強中と云うことなので、「こんな方法もあるよ」的な回答をさせていただきます。
抽出元を抽出先にコピーして、そこから「りんご」以外を削除するロジックとなっています。
なお、抽出先のシートが存在していないとエラーになります。また、抽出対象の「りんご」が無い場合も、エラーになりますので、必要であれば、notimeさんの方で組み込んでください(勉強の一環として)。

Sub りんご()
Dim ToWs As Worksheet
Dim DifRng As Range
Set ToWs = Worksheets("抽出先りんごsheet")
Workshee...続きを読む


このカテゴリの人気Q&Aランキング