ここから本文です

エクセルで検索窓を作りたいです。 エクセルの役員名簿で名前を検索したいです...

waf********さん

2015/12/1108:14:02

エクセルで検索窓を作りたいです。

エクセルの役員名簿で名前を検索したいです。
名簿には役員経験年度・氏名が入力してあり、過去同じ方に役員経験があるのかを調べます。

この名簿に、Ctrl+Fで出てくるような検索窓を、名簿と同じシートの上部に作りたいと思っています。または検索窓と結果表示用のシートを作りたいです。検索結果は、フィルターで絞った時のように、名前がある行を全体を表示したいです。
こういった事は出来ますか?どのようにすれば良いか教えてくださいm(_ _)m

閲覧数:
13,190
回答数:
6

違反報告

ベストアンサーに選ばれた回答

blo********さん

2015/12/1119:26:42

お困りのようですので参考になりましたら幸いです。

Excelのバージョンによって出来る事が、異なりますので
次回以降のご質問の際には、
お手数ですが、ご提示をお願いします。

注意!
先ず大切なファイルは、バックアップを取っておいて保存して下さい。
ご自分の責任でお願いします。

次にテスト用のシートをご用意して
そこで下記の方法をお試ししてテストしてからお使いになって下さい。

マクロで作成してもよろしければいかがでしょうか?

ただしマクロは、Excel2007以降でもセキュリティ上危険が、ありますので
個人情報や会社の機密情報には、おすすめ出来ません。
会社によっては、使用禁止になっている会社もございます。
会社の上司にご相談になり許可を得られましたら
ご自分の責任においてお願いします。
最小限の情報を検索なさるか
どうでも良い資料を作成なさる時などにとどめておいて下さい。

●ご質問の内容:
エクセルの役員名簿で名前を検索したいです。
名簿には役員経験年度・氏名が入力してあり、
過去同じ方に役員経験があるのかを調べます。
との事ですので

★下記は、A列とB列の表で構成されていまして
氏名検索を出来るようにしてあります。
氏名の重複処理を行っていない。
かつ見出しに色を塗りつぶしていない
前提でご説明いたします。

通常では、お手数なフィルターオプションの機能です。
下記は、マクロで作業を効率化した一例です。

●Excel2007以降でしたら
下記の方法でマクロを記述する準備をします。

*****
STEP1.
開発タブを設定
*****

先ずExcelに開発タブを設定します。
既にありましたらそのまま使えます。

開発タブを設定するには、
Excelのファイルタブをクリックします。

サイドメニューの[オプション]をクリックします。
リボンのユーザー設定を選択して
右側にありますメインタブ欄の[開発]にチェックを入れます。
OKボタンを押します。

*****
STEP2.
標準モジュールの追加
*****

次に標準モジュールの追加をします。
マクロを書く場所を標準モジュールといいます。
Alt +ファンクションキーF11で
VBE(Visual Basic Editor)を起動させまして
挿入タブをクリックして
標準モジュールを選択します。

次にAlt +ファンクションキーF11
(パソコンのキーボードでAltを押しながら
ファンクションキーF11を押します。)
VBE(Visual Basic Editor)を起動させると便利です。
この操作は、開発タブのリボンにあります
左側のコードグループのVisual Basicを選択する事でも可能です。

*****
STEP3.
Option Explicitの設定
*****

次に常にエラーが、出てしまった場合に
エラー表示させてくれるために
VBEのツールタブをクリックして
オプションを選択しますと
オプションのダイアログボックスが、表示されますので
[編集]タブのコードの設定欄の
「変数の宣言を強制する」にチェックを入れます。

エラーが、ある場合は、そのステートメントが、黄色くマーカーされます。

*****

下記の役員経験追加のマクロでは、
行が、挿入されてシート名が、役員名簿に変更されて
表に罫線が、引かれている状態です。

マクロの事前準備が、整いましたら
先ほど用意しました標準モジュールに
▼下記の4つのプロシージャを一度にコピーアンドペーストします。

Sub 役員経験追加()
Dim myR As Range

'シート名の見出しSheet1を役員名簿というシート名に変更
Sheets("Sheet1").Select
Sheets("Sheet1").Name = "役員名簿"

'指定箇所4行の挿入
Rows("1:4").Insert CopyOrigin:=xlFormatFromRightOrBelow

'表に格子状の罫線を引く
ThisWorkbook.Sheets("役員名簿").Range("A5").CurrentRegion.Borders _
.LineStyle = xlContinuous

'シート1のシート名[役員名簿]のデータベースに名前を定義します。
ActiveWorkbook.Names.Add _
Name:="役員", RefersTo:="=役員名簿!$A$5:$B$65536"

End Sub

Sub Criteria追加()
Dim myR As Range

'Criteriaの見出しを追加
Range("A2") = "役員経験年度"
Range("B2") = "氏名"

'格子状の罫線
ThisWorkbook.Sheets("役員名簿").Range("A2:B3").CurrentRegion.Borders _
.LineStyle = xlContinuous

Range("A1") = "検索条件"
End Sub


Sub 経歴抽出1()
Range("A5").CurrentRegion.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Range("A2:B3"), Unique:=False

End Sub


Sub 可否抽出解除()
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
End Sub


*****

次に一旦Alt + Qで通常のExcelに戻りますと便利ですので
この方法でExcelに戻ります。

或いは、VBEのファイルタブをクリックして
[終了してMicrosoft Excelへ戻る]を選択しまして
VBEの画面を閉じます。

★注意!★
下記の事は、一覧表の見出しの塗りつぶしなしの状態にして
おこなって下さい。

次にF12キーでエクスプローラを開いて
一旦、マクロを有効にするためにファイルを保存します。
マクロのファイルの保存のためには、
ファイル名を付けまして
ファイルの種類は、
Excel マクロ有効ブック(*.xlsm)を選択しまして
保存ボタンをクリックします。

Excelの画面に戻ったところで
新たに先ほどテスト用に作成した役員名簿のシートを開いて

先ほど作成したマクロの一部分
マクロの実行方法は、Alt +F8
(パソコンのキーボードでAltを押しながらファンクションキーF8を押します。)
ダイアログ画面が、起動しますので
役員経験追加を選び実行をクリックして実行させます。

次に上記と同様にAlt +F8を押しますと
ダイアログ画面が、起動しますので
先ほど作成したマクロの一部分の
Criteria追加のマクロを選び実行をクリックして実行させます。

★マクロをボタンに登録
幾つか方法が、ありますが、
書ききれませんのでそのうちの1つの図形でのご説明をします。

ここでは、抽出用と解除用のボタンを作成します。
表示 → ツールバー → 図形描画
Excelの下の方に表示されますので
オートシェイプ →基本図形で好みの図形を選びます。
ドラッグしてボタンの位置とサイズを決めます。
この図形をコピーして2つ用意します。
次に右クリックしてテキストの編集を選びます。
このボタンの文字は、お好みで検索としても構いません。

※私が、完成して抽出後の結果の画像を添付しましたので参考になさって下さい。

●次に先ほど作成しました左側の抽出ボタンにマクロを登録します。
マクロを登録する方法は、
★左側に作成しました抽出ボタンを右クリックして
マクロの登録を選択して
マクロの保存先が、作業中のブックとなっている事を確認して
今回は、マクロ名を経歴抽出1としてあるものを選択してOKボタンを押して下さい。

同様に次に先ほど作成しました
★★右側に作成しました解除ボタンにマクロを登録します。
マクロを登録する方法は、
解除ボタンを右クリックして
マクロの登録を選択して
マクロの保存先が、作業中のブックとなっている事を確認して
今回は、マクロ名を可否抽出解除としてあるものを
選択しましてOKボタンを押して下さい。

※次回、マクロを登録しましたボタンの編集方法:
このマクロを登録しましたボタンに文字を入れたい場合は、
Ctrlキーを押しながら
右クリックしてテキストの編集を選びます。
このマクロを登録しましたボタンの文字は、お好みで変更しても構いません。

●レイアウトが、不足していますので
ご自分で通常のように手動で色を塗りつぶしたり
足りない分の罫線を補って下さい。

●抽出する方法

抽出ボタンを実行させるには、
検索方法3通りあります。

●パターン①
役員経験年度には、空欄で
例えば鈴木 一郎の場合、

漢字でしたら先頭の鈴でも可能です。

結果

2013年 鈴木 一郎さん
2008年 鈴木 一郎さん
2008年 鈴木 一二三

鈴木 一郎さん過去2008年にも役員でしたってわかります。

鈴木でも検索可能ですので文字を
★★セルB3に入れます。★★★
次に抽出ボタンをクリックします。
同じような抽出結果が、得られます。

結果

2013年 鈴木 一郎
2008年 鈴木 一郎
2008年 鈴木 一二三

他の使い方も出来ます。

●パターン②
例えば2013年に役員でしたのは、どなた?と調べたい場合
役員経験年度の下のセルA3に
2013年を入力しまして
抽出ボタンをクリックします。

2013年 鈴木 一郎さん
2013年 高橋 次郎さん

結果こちらのお2人が、いらっしゃったってわかります。

●パターン③
例えば2008年に役員で鈴木さんは、どうだったかなぁ?と調べたい場合
2008年 鈴木 一郎さん
2008年 鈴木 一二三さん

結果こちらの2人が、いらっしゃったってわかります。

上記のようにフィルターオプションの機能を利用した
プログラムが、作動しまして
成功すれば氏名の抽出結果が、自動的に表示されます。

でもこのままでは、戻りませんので
今度は、解除ボタンをクリックします。
そうしますと一覧表が、元のように表示されます。

再度ファイルを開くには、通常のように
このxlsmを開きます。

警告が、出ましたら
信用できるファイルでしたら
大丈夫ですので編集出来るようにクリックします。

*****
失敗した場合
*****

その際には、VBEを見直して下さい。
エラーが、ある場合は、そのステートメント(構文)が、黄色くマーカーされます。

もしもエラーが、発生しましたら初心者様には、
見つける事が、困難と思われますので
私が、エラーの原因をご検証いたしますので
VBEの画面で黄色か赤でプログラムが、表示されましたら
私にお尋ね下さい。

その際には、その部分とご質問者様の
表の内容やプロシージャを文字でご提示下さい。
出来ましたらテスト用の表の大き目の画像か図をご提示下されば幸いです。


再度コードを見直して間違っていましたら
Deleteキーでその部分を消して修正して下さい。

お困りのようですので参考になりましたら幸いです。

Excelのバージョンによって出来る事が、異なりますので...

質問した人からのコメント

2015/12/14 08:20:09

詳しく教えてくださりありがとうございますm(_ _)m
VBAは初めてですが、挑戦してみようと思います!

ベストアンサー以外の回答

1〜5件/5件中

並び替え:回答日時の
新しい順
|古い順

exc********さん

2015/12/1112:06:14

VBAは柔軟です。VBAできない場合、アドインもあります。
下記方法をご参考ください。
https://www.youtube.com/watch?v=OSORil3rF9M

web********さん

2015/12/1109:16:21

>Ctrl+Fで出てくるような検索窓を、名簿と同じシートの上部に作りたいと思っています

UserFormの作り方
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html



>検索結果は、フィルターで絞った時のように、名前がある行を全体を表示したいです。

フィルターオプション
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm

もうこれで完璧ですね

mit********さん

2015/12/1108:51:32

検索用の窓というよりも検索用のシートを用意すればいかようにでも対応できますね。
例えばシート1に役員名簿があるとしてA列から下方に名前が右側の列に役員の種類と経歴が入力された表であるとします。
例えばシート2を検索用のシートとして例えばA2セルから下方に表示したい名前を入力すると、B列から横の列にその方の役員歴などを表示させるとしたらB2セルには次の式を入力して横方向にドラッグコピーした後に下方にもドラッグコピーします。

=IFERROR(VLOOKUP($A2,Sheet1!$A:$X,COLUMN(A1)+1,FALSE),"")

これで表示させたい名前をA2セルから下方に入力することでお望みのデータが表示されますね。

プロフィール画像

カテゴリマスター

aka********さん

2015/12/1108:44:48

オートフィルターを ご存知なら フィルターの詳細設定で
条件範囲セルを決めて そのセルに検索する名前をいれるようにしては
いかがですか?

sya********さん

2015/12/1108:22:22

vbaでマクロの記録を使ってみて

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる