【お知らせ】カテゴリの見直しについて

画像の範囲で、選択範囲から作成で上端行を名前とした名前の定義を行った場合、「え」以外には空白が入ってしまいます。
そしてそれをドロップダウンリストに使用すると空白も表示されてしまいます。
こちらの場合は
ひらがな=OFFSET(Sheet1!$A$13,,,1,COUNTA($13:$13))
としてG14は「元の値=ひらがな」、G15は「元の値=INDIRECT($G$14)」と指定して空白は有りますがリストはちゃんと表示されます。

全部可変にすればいいのではないかと思ったのですが、それぞれの参照範囲を
ひらがな=OFFSET(Sheet1!$A$13,,,1,COUNTA($13:$13))
あ=OFFSET(Sheet1!$A$13,1,,COUNTA(Sheet1!$A$13:$A$30)-1)
い=OFFSET(Sheet1!$B$13,1,,COUNTA(Sheet1!$B$13:$B$30)-1)
う=OFFSET(Sheet1!$C$13,1,,COUNTA(Sheet1!$C$13:$C$30)-1)
え=OFFSET(Sheet1!$D$13,1,,COUNTA(Sheet1!$D$13:$D$30)-1)
お=OFFSET(Sheet1!$E$13,1,,COUNTA(Sheet1!$E$13:$E$30)-1)
とした場合
G14は「元の値=ひらがな」とし、あ~おがリストに表示され正常に機能しています。
しかしながら、G15で「元の値=INDIRECT($G$14)」としようとすると、「元の値 はエラーと判断されます。続けますか?」と出てG14の値を変えてもG15のリストには何もありません。
あ~おの参照範囲は、「あ」ならa~g、「い」ならh~jとちゃんと可変になっているのは確認できています。

範囲で名前を定義した時の空白をリストに表示させない方法、あるいは可変範囲の名前でエラーを解消する方法のどちらかで良いので教えてください、よろしくお願いします。
画像は説明用に作った簡単なもので、実際はもっと量が多く、手動でやればいいというのは無しでお願いします。

「エクセル2010 ドロップダウンリストに」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>範囲で名前を定義した時の空白をリストに表示させない方法、あるいは可変範囲の名前でエラーを解消する方法のどちらかで良いので教えてください。



別案ですが、名前は定義せず「データの入力規則」の「リスト」に式を入れるだけの方法もできます。
セルG13をアクティブセルにしておき、「データの入力規則」の「リスト」に
=OFFSET(A13,0,0,1,COUNTA(13:13)) の式を入れます。
次にセルG14をアクティブセルにして、同じく、「データの入力規則」の「リスト」に
=OFFSET(A14,0,MATCH(G13,A13:E13,0)-1,COUNTA(OFFSET(A14,0,MATCH(G13,A13:E13,0)-1,100,1)),1) の式を入れます。(100行目まで対応できる式です。)

これでセルG13とG14のドロップダウンリストが連動されますので試してみてください。

<注意>セルG13をドロップダウンで変更した場合は、必ずセルG14も変更すること。
「エクセル2010 ドロップダウンリストに」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとう

お礼が遅くなりすいません。
名前を定義せずにやるという方法は思いつきませんでした。
教えてもらった方法でドロップダウンリストの連動が上手くできました。
ありがとうございました。

お礼日時:2015/09/09 15:43

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

Qエクセル、ドロップダウンリストで空白セルを非表示

エクセル2013です。

Sheet1にドロップダウンリストを作成し、Sheet2のC列を参照したいです。
Sheet2のC列は日々入力され行数が増えていくのでリストの範囲を多めにしたいです。

入力規則
リスト-元の値
=Sheet2!$C$3:$C$20000

にしましたが
Sheet2のC列はまだ1,000行くらいしか入力されていない為
ドロップダウンリストでリストを表示すると
リスト内にて空白の部分の方が多く、検索が大変です。

NETで調べて

入力規則
リスト-元の値
=OFFSET(Sheet2!$C$3,0,0,SUMPRODUCT((Sheet2!$C$3:$C$20000<>"")*1))

としたのですが
ドロップダウンリストには
Sheet2のC列のセルC863までしか表示がされません。
Sheet2のC列はC1003まで値が有ります。

この関数のどこがわるいのでしょうか?
よろしくお願いします。

Aベストアンサー

参考までに

データのある最終行を検索する数式で設定したいなら、以下のような名前定義を使用します。
(元データがA1セル以下にある場合)

=$A$1:INDEX($A$1:$A$20000,MAX(($A$1:$A$20000<>"")*ROW($A$1:$A$20000)))

QExcel 入力規則_リスト 連続しないデータの空白行削除

お世話になります。
Excel2003を使用しています。
あるブックのSheet1に"リストデータ"と名前のついている範囲があります。
Sheet2の任意のセルで、リストデータを基に入力規則から
リスト選択をさせています。
このリストデータにはユーザが任意でデータを入力するのですが
必ずしも連続するデータにはならず
データの途中に空白セルが生じたり
データの最下行が人によって異なってしまいます。
そこで、不要な空白を削除したいのですが
VBAを使わない方法で何かいいアイディアはありますでしょうか。
皆様のお知恵を拝借いたしたく、よろしくお願いいたします。

Aベストアンサー

No.2です。補足拝見しました。

> Sheet2の空いている列(たとえばB列)を作業列として使います。
失礼しました。この記述がSheet1の誤りでした。名前を定義する数式の方は質問文に書いたとおりです。

> 名前を定義し、入力規則のリストを設定する際
> "数式はエラーと判断されます。続けますか?"
> のメッセージが出てしまいます、どうしたらよいでしょうか。

あれ、おかしいですね。エラーになってしまいましたか。
そのままコピーして貼り付ければ、私の環境ではエラーにはならないのですが…。

いろいろパターンを変えて試してみたのですが、こちらではそのようなエラーが出ないので、ちょっと原因がわかりません。もう一度コピーした数式を見直していただけますでしょうか?数式の入力中に矢印キーなどを使うと、カーソルが移動せずに移動先のセル番地が入力されてしまい、数式が狂ってしまいますが、そのようなことはないでしょうか。

どうしてもエラーが出るようでしたら、名前「リストデータ」の定義は
=Sheet1!$B:$B
だけでも空白を削除したリストを利用できます。ただし、リストの一番下の項目の下に空白行がたくさんついてきてしまいますが…。

No.2です。補足拝見しました。

> Sheet2の空いている列(たとえばB列)を作業列として使います。
失礼しました。この記述がSheet1の誤りでした。名前を定義する数式の方は質問文に書いたとおりです。

> 名前を定義し、入力規則のリストを設定する際
> "数式はエラーと判断されます。続けますか?"
> のメッセージが出てしまいます、どうしたらよいでしょうか。

あれ、おかしいですね。エラーになってしまいましたか。
そのままコピーして貼り付ければ、私の環境ではエラーにはならないのですが…。
...続きを読む

Qドロップダウンリストで空白の数式セルの非表示化方法

以下の数式を入力したセルを参照して、氏名をドロップダウンリストから選べるようにしたいと考えております。しかし、下記の方法ですと、空白のセル(参照セルに値が無かった場合に空白""が返されたセル)が空白のままドロップダウンリストに表示されてしまい、目的の氏名をリストから探す時に手間がかかってしまいます。

<想定しているシート>

   A       B       C        D
1                          

3 氏名     物品     帳票氏名  重複判定
4 A川B男   ○○     A川B男     1
5 A川B男   ××                0
6 C田D夫   ▽      C田D夫      1
7 C田D夫   ◆                 0
5 C田D夫   □                 0

※C4の入力数式: =if(D4=1,A4,"")
※C1セルの入力規則の元の値に =offset(C4,0,0,counta(C4:C1000),1)

上記の方法でも、C1セルのドロップダウンリストには空白を伴って氏名が表示される形となってしまいます。

このように、数式が入力された結果空白になっているセルを、ドロップダウンリストで非表示にする方法はないでしょうか?

どうぞよろしくお願い申し上げます。

以下の数式を入力したセルを参照して、氏名をドロップダウンリストから選べるようにしたいと考えております。しかし、下記の方法ですと、空白のセル(参照セルに値が無かった場合に空白""が返されたセル)が空白のままドロップダウンリストに表示されてしまい、目的の氏名をリストから探す時に手間がかかってしまいます。

<想定しているシート>

   A       B       C        D
1                          

3 氏名     物品     帳票...続きを読む

Aベストアンサー

>このように、数式が入力された結果空白になっているセルを、ドロップダウンリストで非表示にする方法はないでしょうか?
D列の重複判定の数式を以下のように変更して、C列の帳票氏名の数式も変更すると空白行を詰めることができます。
D4=IF(COUNTIF(A$3:A4,A4)=1,ROW(),"")
 最初に登場した氏名のときに行番号をセットする。
 2回目以降は""をセットする。
D4セルを必要数下へコピーします。
C4=IFERROR(INDEX(A:A,SMALL(D$4:D$8,ROWS(A$4:A4))),"")
 行番号の小さい順に氏名をセットする。
C4セルを必要数下へコピーします。
IFERROR関数はExcel 2007以降のバージョンに組み込まれています。
Excel 2003以前の場合は次の数式で対処してください。
C4=IF(ROWS(A$4:A4)<=COUNT(D$4:D$8),INDEX(A:A,SMALL(D$4:D$8,ROWS(A$4:A4))),"")

貼付画像はExcel 2013で検証した結果です。
提示された模擬データの範囲だけで処理していますので、実際のデータに合わせて対象範囲を変更してください。

>このように、数式が入力された結果空白になっているセルを、ドロップダウンリストで非表示にする方法はないでしょうか?
D列の重複判定の数式を以下のように変更して、C列の帳票氏名の数式も変更すると空白行を詰めることができます。
D4=IF(COUNTIF(A$3:A4,A4)=1,ROW(),"")
 最初に登場した氏名のときに行番号をセットする。
 2回目以降は""をセットする。
D4セルを必要数下へコピーします。
C4=IFERROR(INDEX(A:A,SMALL(D$4:D$8,ROWS(A$4:A4))),"")
 行番号の小さい順に氏名をセットする。
C4セルを必要数下...続きを読む

Qプルダウンで選択すると隣のセルに自動で入力される方法

プルダウンで選択すると隣のセルに自動で入力される方法
エクセル2003でシート1に「会社名」と「住所」を一覧を作成。シート2でプルダウンで「会社名」を選択すると隣のセルに自動で「住所」が出るようにしたいのですが、何か良い方法(関数)はありますか。教えてください。宜しくお願いいたします。

Aベストアンサー

プルダウンで確定した値を使ってVLOOKUPで検索したら。

例えば、Sheet1のA1~B10に会社名と住所の一覧があって、
Sheet2のA1でプルダウンで会社名を選択した場合、
B2を
=VLOOKUP(A1,Sheet1!A1:B10,2,FALSE)
とすれば、会社名に対応した住所が表示されます。

Qエクセルでドロップダウンリストを複数連動させ、1つ目を変えた時2つ目以降をリセットさせたい

エクセルのドロップダウンリストを使い始めて判らない事があったので教えてください。
ドロップダウンリストを複数連動させた時、1つ目を変えても2つ目以降に選んだものはそのままになってしまいます。
例として適当に作ったものですいませんが、画像左上は1つ目のリストでデザートを選択、2つ目でアイスを、3つ目でバニラを選んだ状態です。
2つ目は1つ目に、3つ目は2つ目にINDIRECTを使い連動させています。
1つ目のリストを飲み物に変えても2つ目と3つ目はそのままです。

1つ目を変えたら2つ目と3つ目を自動的に空白、リスト一番上の「‐」、未入力等の文字を表示、といった状態にする方法はないでしょうか?

Aベストアンサー

こんばんは!

VBAになりますが、一例です。
A~C列にリスト設定してあるという前提です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
連動しているリスト候補を表示(消去)してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range
If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 100 Then Exit Sub
For Each c In Target
If Target.Column = 1 Then
c.Offset(, 1).Resize(, 2).ClearContents
Else
c.Offset(, 1).ClearContents
End If
Next c
End Sub 'この行まで//

※ A・B列データ消去でその右セルを消去するようにしていますが、
極端に広い範囲を指定した場合は何も変化しません。
(100セルまでは動くはずです)m(_ _)m

こんばんは!

VBAになりますが、一例です。
A~C列にリスト設定してあるという前提です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
連動しているリスト候補を表示(消去)してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range
If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 100 Then...続きを読む

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

QExcelでの名前定義に空白を使いたい

Excelでの名前定義に空白を使えないのを知りました。
どうしても使いたい場合どのようにしたらよろしいのでしょうか。

この方の質問と少し重複します。
http://okwave.jp/qa3083667.html

不動産会社で契約している大家さんが数名いたとします。
この大家さん達は、アパートやマンションをそれぞれいくつか所有しています。
まずセルA1で大家さんの姓名をプルダウンで選択し、
(ここでどうしても姓名の間に空白が必要なのです)
A2ではそれに対応したアパートやマンションの名称を選択、
A3ではそのアパートの住所を表示(プルダウンでも可)したいとします。

まず他のシートに大家さん名を横並びで一覧を作り、ooya範囲を作って、
それぞれの下にアパート名、その下に住所と交互に記載し、
その範囲を名前の適用で最上行の大家さん名に設定したいのですが、
名前の定義で空白がはねられます。

仮に空白を入れなければ、A1で選んだ大家名に対応して、A2 A3 に
入力規則のセル範囲で、=INDIRECT(A1) として、
A2ではアパート名 A3では住所を選択して一応使うことはできますが、
このまま表示するので姓名間に空白を入れないわけにはいきません。
(その都度手作業でスペースを入れればいいのかもしれませんが....)

大家 A            
Aアパート
Aアパート住所

上記リンクの他の方へのご回答を参考にすると、
禁則文字に対応するリストを作って、VLOOKUPで変換するとありますが、
私の場合は初めの部分で変換が必要なので、ご回答を参考にしても
どのようにしていいのかがわかりません。
ご教授頂ければ幸いです。

Excelでの名前定義に空白を使えないのを知りました。
どうしても使いたい場合どのようにしたらよろしいのでしょうか。

この方の質問と少し重複します。
http://okwave.jp/qa3083667.html

不動産会社で契約している大家さんが数名いたとします。
この大家さん達は、アパートやマンションをそれぞれいくつか所有しています。
まずセルA1で大家さんの姓名をプルダウンで選択し、
(ここでどうしても姓名の間に空白が必要なのです)
A2ではそれに対応したアパートやマンションの名称を選択、
A3ではその...続きを読む

Aベストアンサー

こんにちは~♪

式の書き方はいろいろあって
OFFSET等つかうとすこし短くなりますが。。
再計算するので、INDEXを使っています。

名前定義その1
名前 → 00ya
=INDEX(Sheet2!$A:$Z,1,1):INDEX(Sheet2!$A:$Z,1,COUNTA(Sheet2!$A$1:$Z$1))

これは大家さんの氏名のリストの式です。
Z列まで(28名分)まで式に入れていませんので必要列に
変更して下さい。少ない場合にはこのままでいいです。
ただ、この式が必要なければ
これまでのmonmeeさんの参照式で構いません。

名前定義その2
名前 → siki1
=INDEX(Sheet2!$A$2:$Z$100,0,MATCH(Sheet1!$A$1,ooya,0))

名前定義その3
名前 → siki2
=INDEX(Sheet2!$A$2:$Z$100,1,MATCH(Sheet1!$A$1,ooya,0)):INDEX(Sheet2!$A$2:$Z$100,COUNTA(siki1),MATCH(Sheet1!$A$1,ooya,0))

★その2 と その3 の式でも$F$100 と範囲を指定していますが。
必要範囲に変更して下さい。。
これ以下でしたらこのままで構いません。。

次に
A1の入力規則
リスト → =ooya

A2A3の入力規則
リスト → =siki2

で、終了です。。。

上の式はチョット長いのでコピーして貼り付ける時は
Ctlr+Vキーで貼り付けてください。
(ご存知でしたらゴメンナサイ!!)

ご参考にどうぞ。。。

。。。Ms.Rin~♪♪

こんにちは~♪

式の書き方はいろいろあって
OFFSET等つかうとすこし短くなりますが。。
再計算するので、INDEXを使っています。

名前定義その1
名前 → 00ya
=INDEX(Sheet2!$A:$Z,1,1):INDEX(Sheet2!$A:$Z,1,COUNTA(Sheet2!$A$1:$Z$1))

これは大家さんの氏名のリストの式です。
Z列まで(28名分)まで式に入れていませんので必要列に
変更して下さい。少ない場合にはこのままでいいです。
ただ、この式が必要なければ
これまでのmonmeeさんの参照式で構いません。

名前定義その2
名前 → sik...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Qドロップダウンリスト(INDIRECT関数)でエラー

「QNo.2687724」の質問補足です。
ドロップダウンリストが表示されなくなる原因に心当たりがありました。入力規則を設定するときに、「元の値はエラーと判断されます。続けますか?」とメッセージがでていたのです。
Sheet1を売上帳、Sheet2を得意先リストにし、売上帳の「A1」に得意先の頭の文字を入力、「B1」に「入力規則」の「リスト」で「元の値」に「=INDIRECT(A1)]と入力しました。
エラーと判断される「元の値」というのは、Sheet2 の得意先リストのことなのでしょうか?
Sheet2 の得意先リストは、縮小表示するとこのような形で名前の定義をしています。
 A B C D E F G H I
 あ か さ た な は ま や ら ←50行
 い き し ち に ひ み ゆ り ←30行
 う く す つ ぬ ふ む よ る ←30行
 え け せ て ね へ め   れ ←30行
 お こ そ と の ほ も わ ろ ←30行
つまり、「あ」の得意先は、50セル、「い」は30セル入力できるようにしました。
この方法で、どこかエラーになる原因あるのでしょうか?
「QNo.2687724」の質問に補足を付けたかったのですが、できないようなので、新規質問にさせていただきました。又、Excel のバージョンは2002ではなく、2003でした。
せっかくここまできたのに、このままでは使えないと言われてしまい解決を急いでおります。アドバイスを宜しくお願いいたします。

「QNo.2687724」の質問補足です。
ドロップダウンリストが表示されなくなる原因に心当たりがありました。入力規則を設定するときに、「元の値はエラーと判断されます。続けますか?」とメッセージがでていたのです。
Sheet1を売上帳、Sheet2を得意先リストにし、売上帳の「A1」に得意先の頭の文字を入力、「B1」に「入力規則」の「リスト」で「元の値」に「=INDIRECT(A1)]と入力しました。
エラーと判断される「元の値」というのは、Sheet2 の得意先リストのことなのでしょうか?
Sheet2 の得意先リストは、縮...続きを読む

Aベストアンサー

こんにちは。Wendy02です。

#2の返事を待たずに、今、時間が取れたので、入力規則が現れなくなる原因の問題に対処した、マクロを作ってしまいました。

>QNo.2677035 /Excel2002 で売上帳を作成しました。
>得意先名が250件を超え、得意先名の番号を捜すのが大変だと言われてしまい

入力するシートのシートタブ(下方)のところを右クリックして、「コードの表示」で、以下を貼り付けてください。DATAAREA のところは、Sheet2のA1 が、データリストの左端上にあるなら、そのままで結構ですが、必ず、一度「得意先の入ったデータリスト」を開けてください。その得意先のデータリストは、別に、並べてなくても良いです。離れたところにない限りは、すべて拾ってくれます。

ただし、これは、今までのものとは必ずしも同じではありません。
また、便利かどうかは、今の方法が良いかは分かりません。

たとえば、"野村会社" を探す場合は、「村」でも「野」でも、その中にある漢字を一字、A列に入れれば、B列の入力規則側に現れます。しかし、逆に、"会社"という言葉があれば、会社と入っているものが全部リストされてしまいます。その点に違いがあります。

また、単語が見つからないと、そのまま、B列の隣のセルにその文字が写されます。

この入力規則は、A列に検索語を入れたセルに対してのみ現れるもので、隣のB列にはひとつしかありません。これは、(書式や入力規則表示に対する)メモリ負担にならないように考えたものです。

なお、これは試作段階のもので、実用になるかは、調整が必要かもしれません。当初、私が「QNo.2677035」でイメージしていたものとは違ってしまっていますが、前のスタイルか、まったく別のものに変えることも可能です。

それから、もしも、反応しなくなったら、Alt + F8 から、「データ更新」というタイトルを探して、クリックすれば、復活します。

'シートモジュール設定
'-----------------------------------------------------------------
'Option Explicit
Private myData() As Variant
Const DATAAREA As String = "Sheet2!A1" '間に空白のない範囲は、左端上のひとつのセル
'解説:Ctrl +Shift + End で括られるデータのある範囲
'Ver.2690474.01
Const INPUTCOL As Integer = 1 '検索語を入れる列
Private Sub MakingList()
Dim i As Long
Dim myRange As Range
Dim buf As Variant
Dim c As Variant
  If InStr(DATAAREA, "!") > 0 Then
   buf = Split(DATAAREA, "!")
   Set myRange = Worksheets(buf(0)).Range(buf(1))
  ElseIf InStr(DATAAREA, ".") > 0 Then
   buf = Split(DATAAREA, ".")
   Set myRange = Worksheets(buf(0)).Range(buf(1))
  End If
  If InStr(DATAAREA, ":") = 0 Then
   Set myRange = myRange.CurrentRegion
  End If
Erase myData
For Each c In myRange
 ReDim Preserve myData(i)
  myData(i) = c.Value
  i = i + 1
Next c
End Sub

Private Sub Worksheet_Activate()
 Call データ更新
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim myList As String
 Dim c As Range
 If Target.Column <> INPUTCOL Then Exit Sub 'A列
 If Target.Count > 1 Then Exit Sub
 If Target.Value <> "" Then
  EnterValidationList Target.Value, myList
 Else
  Exit Sub
 End If
 Application.EnableEvents = False
 If myList = "" Then Target.Offset(, 1).Value = Target.Value: GoTo Quit
 On Error Resume Next
 For Each c In Cells.SpecialCells(xlCellTypeAllValidation)
   c.Value = c.Value
   c.Validation.Delete
 Next c
 On Error GoTo 0
 On Error GoTo Quit
 With Target.Offset(, 1).Validation
  .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  xlBetween, Formula1:=myList
  .IgnoreBlank = True
  .InCellDropdown = True
  .InputTitle = ""
  .ErrorTitle = ""
  .InputMessage = ""
  .ErrorMessage = ""
  .IMEMode = xlIMEModeNoControl
  .ShowInput = True
  .ShowError = True
 End With
  Target.Offset(, 1).Select
Quit:
 Application.EnableEvents = True
End Sub

Sub EnterValidationList(Matchwd As String, myList As String)
'変更の余地があります。
Dim Dummy As Variant
Dim ar As Variant
On Error GoTo ErrHandler
 Dummy = UBound(myData)
 Dummy = Empty
 ar = Filter(myData, Matchwd)
 On Error Resume Next
  Dummy = ar(0)
  If Dummy <> Empty Then
    myList = Join(ar, ",")
  End If
 On Error GoTo 0

Exit Sub
ErrHandler:
 Call MakingList
 Resume
End Sub
Sub データ更新()
'動かなくなった時もこれを使う
 Application.EnableEvents = True
 MakingList
End Sub

こんにちは。Wendy02です。

#2の返事を待たずに、今、時間が取れたので、入力規則が現れなくなる原因の問題に対処した、マクロを作ってしまいました。

>QNo.2677035 /Excel2002 で売上帳を作成しました。
>得意先名が250件を超え、得意先名の番号を捜すのが大変だと言われてしまい

入力するシートのシートタブ(下方)のところを右クリックして、「コードの表示」で、以下を貼り付けてください。DATAAREA のところは、Sheet2のA1 が、データリストの左端上にあるなら、そのままで結構ですが、必ず、一...続きを読む

Q結合されたセルをプルダウンのリストにする方法は?

先日は以下の質問でお世話になりました。
http://oshiete.goo.ne.jp/qa/8846917.html

さっそく作業に取り掛かったのですが、以下の画像のように結合されたセルをプルダウンのリストにしようとすると"リストの元の値は、区切り文字で区切られたリストか、または単一の行または列の参照でなければなりません。"と表示されてしまい、エラーとなってしまいます。

つまり、結合されたセルをプルダウンのリストにすることは出来ないのでしょうか?

面倒な質問かとは思いますが、どうぞ宜しくお願い致します。

Aベストアンサー

画像が小さすぎて どこをどう指定しているのか分かりません。

リスト範囲の選択を マウスで指定するのではなく「A1:A10」のように単一の行もしくは
列で直接入力して指定すれば問題ないはずです。セルの結合は見た目だけのものですから
先頭の行もしくは列が指定範囲になります。これはバージョン関係ないです。

ただ……リストに指定する範囲に何故 セルの結合なんてものが必要なのかと思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング