• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ドロップダウンリストで空白のセルを非表示)

ドロップダウンリストで空白のセルを非表示

このQ&Aのポイント
  • エクセル2013でドロップダウンリストを作成し、空白のセルを非表示にする方法について教えてください。
  • Sheet1にドロップダウンリストを作成しましたが、Sheet2のC列を参照するためにはどうしたら良いですか?空白のセルが多くて選択が大変です。
  • NETで調べると、同一シート内ならoffsetを使ってリストの範囲を指定できるみたいですが、他のシートの場合はどうすれば良いですか?

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

ご使用のExcelのバージョンが2013なら、他シートのデータ範囲でも入力規則のリストに設定できるはずですが・・・ また、大きめのデータ範囲で設定しても空白セルを除外してリストに表示されるはずです。 もし、Excel2003をご使用なら、「名前の定義」でデータ範囲を指定するOFFSET関数を適当な名前を指定して、この名前をリスト範囲に「=定義した名前」のように設定すれば、他シートの範囲のリストも参照することができます。

gx9wx
質問者

お礼

すいません。 ずっと2003のみ使用していて エクセル2013は今年4月から使っております。 今試したら 名前の管理を使わなくても ドロップダウンリストに リスト ↓ =Sheet2!$C$3:$C$20000 が出来ました。 大変申しあわけ有りません。 ありがとうございました。

gx9wx
質問者

補足

ありがとうございます。 >ご使用のExcelのバージョンが2013なら、 >他シートのデータ範囲でも入力規則のリストに設定できるはずですが・・・ はいできます。 別シートSheet2のC3~C20000の範囲を を名前の管理で「商品名」としておいて Sheet1のドロップダウンリストの 入力規則にはリスト-「=商品名」 としました。 名前を「商品名」とした範囲のSheet2のC3~C20000のうち C3~C1000までしかデータが入力されていません。 Sheet1のドロップダウンリストをクリックすると Sheet2のC列に入力してある値がリストに並びますが 1000行中にランダムに空白が有りますがそれも表示されてしまいますし 下の方に行くとリスト内がずっと空白です。 >また、大きめのデータ範囲で設定しても空白セルを >除外してリストに表示されるはずです。 これが今の私の方法では除外されないのです。 セル範囲に名前を付けない方がいいのでしょうか?

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です。 たびたびごめんなさい。 >Sheet2のC列を参照したい為 を見逃していました。 画面左下のSheet2のSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペーストしてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim lastRow As Long If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub Range("D:D").ClearContents Range("C3:C20000").Copy Range("D1") lastRow = Cells(Rows.Count, "D").End(xlUp).Row Range(Cells(1, "D"), Cells(20000, "D")).SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp End Sub 'この行まで 次にExcel画面(Sheet1)に戻りリスト表示させたいセルを範囲指定し リストの元の値の欄の数式を =OFFSET(Sheet2!$D$1,0,,COUNTA(Sheet2!$D:$D)) としてください。 ※ 前回は同一Sheetでの操作と勘違いしていました。 どうも失礼しました。m(_ _)m

gx9wx
質問者

お礼

いつもいつもご配慮いただきすいません。 ありがとうございます。 名前の管理でなくてもできるみたいなので 関数で挑戦してみます。 マクロはマクロで考えたいです。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! リストで空白セルを含む範囲を指定すればそのまま空白セルがリスト候補になってしまうと思います。 そこで一例です。 使っていない列にC3~C20000セルの空白以外を表示させ、 その列をリストの候補に表示させてみてはどうでしょうか?(VBAも併用します) 仮にD列に表示させるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに↓のコードをコピー&ペースト Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim lastRow As Long If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub Range("D:D").ClearContents Range(Cells(3, "C"), Cells(20000, "C")).Copy Range("D1") lastRow = Cells(Rows.Count, "D").End(xlUp).Row Range(Cells(1, "D"), Cells(lastRow, "D")).SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp End Sub 'この行まで 次にExcel画面に戻り 入力規則のリスト表示させたいセルを選択 → リストの元の値の欄に =OFFSET(D$1,0,,COUNTA(D:D)) という数式を入れます。 これでD列に表示されているものだけがリスト候補として表示されると思います。 ※ D列が目障りであれば非表示にしておきます。 こんな感じではどうでしょうか?m(_ _)m

gx9wx
質問者

お礼

やマクロでないとむずかしいでしょうか? ありがとうございます。

関連するQ&A