2013-04-26 13 views
5

いいえ、私は現在、別のシートの範囲から入力されたドロップダウンを持っています。EXCEL VBA - セルの範囲と文字列に基づいて動的なドロップダウンを作成する

各値のテキスト内の別のセルのテキスト値を持つ値を追加するだけで、ドロップダウンの値を減らしたいと考えています。例えば

:A1は「テーブル」 セルA2は、範囲は「テーブル」が範囲 から値を引くドロップダウンであると言う セル、

現在、「大きなテーブル」、「スツール」ドロップダウンですべての値が表示されます。この例では、「テーブル」と「大きなテーブル」を持っていて、両方に「テーブル」があるようにしたいと考えています。

私のファイルの例は、ここに http://www.filedropper.com/example_1

見つけることができます..私は私の髪を引き裂くよ助けてください!

おかげで マイク

+1

あなたのコードはどこですか?これまで何を持っていますか? – Juliusz

+0

http://stackoverflow.com/questions/how-to-askと私の個人的なお気に入りをチェックしてください:http://mattgemmell.com/2008/12/08/what-have-you-tried –

+0

@K_B I私はこれについて他の質問を探しており、関連すると思われるものはすべて私が探しているものではないことを少し不公平だと考えています。私はここにファイルをアップロードするオプションを見ることができないので、私は私の質問に例を書いた。ここにスプレッドシートをアップロードする方法を教えてもらえれば、私はそれをあなたのために行うことができます。 –

答えて

1

ここVBAなしでそれを行うための一つの方法です:

(特に断りのない限り、全ての命令が項目のリストをシート上で行うことにする): enter image description here

  1. は、提供されたテキストを検索します。 C2では、=NOT(ISERROR(SEARCH('Choose Items'!$A$2,A2)))を入力して
  2. を下にコピーカウントはD2でヒット:=IF(C2,1,0)、D3に:=IF(C3,D2+1,D2)から
  3. ダウンコピーする動的なリストを作成します:F2で:F9を、数字1-8を配置します。 G2では、この式を使用して=IFERROR(INDEX($A$2:$A$9,MATCH(F2,$D$2:$D$9,0)),IF(F2=1,"No match",""))とコピーします。
  4. ダイナミック名前付き範囲を作成します - 名前マネージャー( - >名マネージャー)で、ItemsDynamic新しい名前を挿入し、式として=OFFSET(Items!$G$2:$G$9,0,0,MAX(Items!$D$2:$D$9,1),1)を提供しています。
  5. フィールド検証完了

であなたのドロップダウンのソースとして新しいItemsDynamicを使用してください!溶液についてはthis fileを確認してください。

2

これはより簡単な答えです。

最初にヘルパー列の 'Items'シート内の項目をグループ化します。たとえば、 'C2'の式を使用して 'C'列を入力して入力します。シートで今

=IFERROR(RIGHT($A2,LEN($A2)-FIND(" ",$A2)),$A2) 

、セルB2のために、「アイテムの選択」検証リストのソースとして、以下を使用 -

=OFFSET(Items!$A$1,MATCH('Choose Items'!$A2,Items!$C$2:$C$10,0),,COUNTIF(Items!$C$2:$C$10,'Choose Items'!$A2),) 

あなたは列の他の行に検証を拡張するためにダウンを埋めることができます " B '

' Items 'シートのデータを10以上の行に拡張する必要がある場合は、offset関数の一致範囲とcountif関数を適切に変更して、データ全体を含むようにします(column 'C')。

「アイテム」シートのリストがヘルパー列(昇順または降順)(この場合は列 'C')に並べ替えられていることを確認してください。