Excelで、
ある列に簡単な文字列を入力していっているのですが、
それまでに同じ列で入力したのと同じ内容を入力する際に、
ドロップダウンリストを使いたいと思っております。
入力リストとも思うのですが、内容が固定でなく、
新たな内容を入力したら、それもリストで
使えるようにしたいです。
(例)
AAA
(空白)
(空白)
BBB
(空白)
CCC
(空白)
←ここを入力するときに、
AAA・BBB・CCCから選択またはDDDを手入力
←上でDDDを入力していたらAAA・BBB・CCC・DDDから選択
そうでなければAAA・BBB・CCCから選択
以下ずっとこんな感じ(新項目を入力したら以後それもリストに入ってほしい)
このような場合、どのように設定したらよいのか、
お分かりの方がいらっしゃいましたらご回答ください。
No.6ベストアンサー
- 回答日時:
こんにちは。
>自動的にリスト形式になってしまい、新たな(=リストにない)項目入力ができなくなってしまいます。
これは、私のミスです。すみません。それと、細かい点も見直してみました。また、ダブルクリックではなく、右クリックや、Alt + ↑に置き換えることも可能です。
以下のようにすれば、リストにないものでも加えられるようになります。入力規則のドロップダウンが邪魔になるときに、消すプログラムも付けておきます。シートをアクティブにすると消えます。
それと、今は、文字のリストを使っていますので、たぶん、そんなに多く入らないかもしれません。もし、そういう状況になったら、シートのどこかにリストを作ってあげれば、1000個ぐらいは可能になると思います。ただ、1000個もあったら、探すのが面倒だと思いますが。
'-------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim tRng As Range
Cancel = True
ActiveCell.EntireColumn.Validation.Delete
If WorksheetFunction.CountA(Target.EntireColumn) = 0 Then Exit Sub
Set tRng = Range(Cells(1, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp))
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=UniqLists(tRng)
.IgnoreBlank = True
.InCellDropdown = True
.ShowError = False
End With
End Sub
Function UniqLists(rng As Range) As String
'リスト化する関数プロシージャ
Dim i As Long
Dim ret As Variant
Dim buf As String
With rng.Columns(1)
For i = 1 To .Rows.Count
If .Cells(i, 1).Value <> "" Then
ret = Application.Match(.Cells(i, 1).Value, .Cells, 0)
If IsNumeric(ret) And ret = i Then
buf = buf & "," & .Cells(i, 1).Value
End If
End If
Next i
End With
UniqLists = Mid(buf, 2)
End Function
'-------------------------------------------
Private Sub Worksheet_Activate()
'シートをアクティブしたときに、入力規則のリストを削除する
Dim rng As Range
On Error Resume Next
Set rng = ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation)
rng.Validation.Delete
Set rng = Nothing
On Error GoTo 0
End Sub
希望の動作を確認いたしました。
前回のものですと何も入力していない列をダブルクリックすると
エラーになってしまっていたのですが、
指摘していないのにしっかりと修正されていた!のも
大変感心いたしました。
ありがとうございました。
No.5
- 回答日時:
2つのことと関連していて、難しい点は、
(1)入力規則
途中空白がある
項目(入力規則の元のデータ)が増えていく
(2)オートフィルタ
ALT+↓
既に入力した文字列に限るなら(2)が相応しいが、途中行で空白セルがあるとそれより上は出してくれない。
ーーー
例データ A列は入力列。B列は作業列
A列 B列
連番
aaa1
aaa
sss2
sss
xxx3
xxx
xxx
ssss4
ssss
xcvvv5
xcvvv
B2の式
=IF(AND(A2<>"",COUNTIF($A$2:A2,A2)=1),MAX($B$1:B1)+1,"")
一応の縛りとして、第100行まで入力するとする。
第100行まで式を複写。
ーーー
H列は作業列。
H2は=IF(ROW()-1>MAX($B$1:$B100),"",INDEX($A$1:$A$1:$A$100,MATCH(ROW()-1,$B$1:$B$100,0)))
を第100行まで式複写。
結果
aaa
sss
xxx
ssss
xcvvv
ーーー
入力規則の設定操作
A列A2:A100を範囲指定して
データ
入力規則
リスト
元の値に式で
=OFFSET($H$2,0,0,MAX($B$2:$B$100),1)
ーーー
これで質問要求に近いものだろう。
上記は「imogasi方式」(興味あればGoogleで照会のこと)の応用です。
ありがとうございます。
おっしゃる方法でうまくいきました!
(新たな項目を入力できなかったので
入力規則でエラーメッセージを出す
というチェックは外しましたが)
No.4さんように、マクロ?を使うか、
作業行(セルのコピーあり)を使うかってことで、
他の作業条件を見ながら選択していきたいと思います。
No.4
- 回答日時:
こんにちは。
ご質問者さんのおっしゃっているドロップダウンリストは、右クリックメニューに出てくるドロップダウンリストだと思いますが、#3さんのおっしゃるリストは、間に空白があると出てこないはずです。
そこで、マクロで代用品を作ってみました。シート・タブを右クリックして、コードの表示で、以下を貼り付けてください。入力規則のドロップダウンリストは、いつも一個しか存在しません。
以下は、ダブルクリックして、ドロップダウンリストを表示します。
'-------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'ダブルクリック・イベント
Dim tRng As Range
Cancel = True
Columns(Target.Column).Validation.Delete
Set tRng = Range(Cells(1, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp))
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=UniqLists(tRng)
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
Function UniqLists(rng As Range) As String
Dim i As Long
Dim ret As Variant
Dim buf As String
With rng.Columns(1)
For i = 1 To .Rows.Count
If .Cells(i, 1).Value <> "" Then
ret = Application.Match(.Cells(i, 1).Value, .Cells, 0)
If IsNumeric(ret) And ret = i Then
buf = buf & "," & .Cells(i, 1).Value
End If
End If
Next i
End With
UniqLists = Mid(buf, 2)
End Function
ありがとうございます。
基本的なことは、うまく行きました!
すばらしいです。
ただ、すいませんが、一点だけリクエストがあります。
もしお分かりなら教えてください。
それは、一度ダブルクリックしたセルに対して、何も入力せず一度フォーカス(選択)を外したあと、
再度そのセルに移動すると(その移動がマウスのクリックでもキーボードの矢印キーでも)
自動的にリスト形式になってしまい、新たな(=リストにない)項目入力ができなくなってしまいます。
一度もダブルクリックしなければ、新たな項目を入力できるのですが。
一度ダブルクリックしたセルもこの初期状態に自動的に戻すなんてことはできませんでしょうか。
No.2
- 回答日時:
例えば、元のデータの入力している範囲が、A2:A10だとすると、
データ→入力規則→リストの元の値で
=$A2:$A65536
のように変更してOKすればいいと思われます。(入力されている最終行以降の空白データは表示されません)
あえて、最終行までと指定したい場合は、
=INDIRECT("A2:A"&MATCH(10^100,A:A,1))
のような数式をいれればいいです。
ありがとうございます。
> 元のデータの入力している範囲が、A2:A10だとすると、
というのはどのような意味でしょうか。
元のデータ自体が入力に従って増えて行くのですが。。。
いちおう、=$A2:$A65536
の方でやってみましたが、
ドロップダウンリストが
空白になってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Excel(エクセル) データ入力規則リスト 空白を無視 3 2022/07/13 15:11
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) Excel ドロップダウンリスト(入力規則)に関してです データの入力規則で元データ79000行のド 3 2023/07/17 10:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報