• ベストアンサー

VBAで生年月日検索

 エクセルで膨大なデータ(Sheet1)の中から、入力フォーム上で生年月日を検索すると、候補者が複数人表示され、その表示された人々の中から一人をカーソルで任意選択してEnterを押下することにより、選択された該当者のデータ(氏名、性別、生年月日等)がSheet2に反映されるようなシステムを作りたいのですが、どうすればいいのでしょうか。  ご教授お願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート1ではA2セルから下方に氏名が、B2セルから下方に性別が、C2セルから下方には生年月日が入力されているとします。 そこで例えばG1セルには”G2セルに誕生日を入力しダブルクリックしてください。”と文字列を入力します。 G2セルには検索したい生年月日を例えば1980/1/5のように入力します。 G2セルをダブルクリックすることで該当者が有る場合にはH2セルから下方に氏名が表示されます。 そのH列の氏名をダブルクリックすることでその方のデータがシート2の最下段に入力されます。 そのためのマクロはシート見出しでSheet1を右クリックし「コードの表示」でマクロを入力する画面が表示されますので次のコードを入力します。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Long Dim N As Long If Target = Range("G2") And Target <> "" Then i = 0 N = 1 Do i = i + 1 If Range("C" & i).Value = Target.Value Then N = N + 1 Range("H" & N) = Range("A" & i) & "/" & i End If Loop Until Range("A" & i) = "" If Range("H2") = "" Then MsgBox "該当者がありません。" Else MsgBox "H列でシート2にコピーしたい名前のセルを右クリックしてください。" End If End If If Target.Column <> 8 Or Target.Value = "" Then Exit Sub i = Mid(Target.Value, InStr(Target.Value, "/") + 1, 3) * 1 Range(Range("A" & i), Range("F" & i)).Copy Range("A" & i).Select Worksheets("Sheet2").Activate lastrow = Worksheets("Sheet2").Range("A65536").End(xlUp).Row + 1 Worksheets("Sheet2").Range("A" & lastrow).Select ActiveSheet.Paste Application.CutCopyMode = False Worksheets("Sheet1").Range("H:H").Clear Worksheets("Sheet1").Range("G2") = "" Cancel = True End Sub

taku5
質問者

お礼

ご丁寧に説明していただきありがとうございました。

taku5
質問者

補足

ご親切にありがたいです。 言われた通り、G2セルに誕生日を入れダブルクリックしたんですが、H2以降に氏名が表示されません。 なぜでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.5

ANo2続き 1.入力フォームにこだわるのであれば、Sheet3を入力フォームページとして使用し、 ANo3の方のマクロをSheet3に書くということでどうでしょう。元データがSheet1にある ので、コードを少しいじる必要がありますが、見た目は、フォームを作るのと変わりま せん。 2.ANo3のマクロが動かないということですが、私は、ANo3の通り作って正常に 動作しました。どこか入力ミスがあるのではないでしょうか? プログラムを1ステップづつ動作させて、各ステップが思ったとおりに動いているか確認 してみてください。ミスの箇所が見つかると思います。     1ステップ動作:        コードの各行の左端のグレー部分をクリックすると黒丸がつきます。        生年月日のセルをダブルクリックするとマクロが起動し黒丸の行で        一時ストップします。F5キーを押すとマクロを継続します。        全部の行に黒丸をつけると、F5キーを押すごとに1ステップづつマクロが        進みます。        Sheet部分と、VBAの画面を並べて表示し、ステップごとのSheetの動きを        見れば、不具合箇所が見つかると思います。 もっとも、マクロの各ステップがどんな命令をしているか理解できていないと不具合 箇所が見つかりませんので、まずは、理解をしてください。 ANo3さん すみません。貴マクロが、スマートだったので、引用させていただきました。

taku5
質問者

補足

ひとつずつ理解してちゃんと動きました。 ご丁寧にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

ANo2の要望に対する回答 ANo3で、セルだけを使った方法を回答されております。 これを理解できないか、希望の内容で無い場合は、不明の点を質問してください。

taku5
質問者

補足

下記の方法でも良いのですが、できれば、入力フォーム上で該当者を選択するような方が個人的にはいいかなと思っています。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

ご希望の処理であれば、VBAを使わなくても、簡単にできますが、VBAにこだわる理由はあるのでしょか? 1.VBAを使わない方法   1)膨大なデータ(Sheet1)を生年月日でソートする。     Excel 2010の場合:生年月日のいずれかのセルを選択     メニューの「データ/AZ→」をクリックする   2)目的の生年月日/名前の行をコピーしSheet2にペーストする 2.VBAを使う方法   1)貴方が、VBAのまったくの素人であるなら、知識のある方に依頼されることをお勧めします。     この紙面で説明することは困難です。   2)ある程度知識があるのであれば、もう少し、具体的に不明部分をお知らせください。     たとえば、       (1)入力フォームの作り方がわからない。       (2)誕生日が一致する候補者の表示方法がわからない。       (3)候補者から該当者を選択するフォーム(コンボックス)の作り方がわからない。       (4)該当者のデータをSheet2にコピーする方法がわからない。   

taku5
質問者

補足

ご丁寧にありがとうございます。今勉強中でVBAを少しかじった程度のレベルです。 具体的に言うと、2と3が分からないです。 もし良ければ教えていただけますか。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

ソフトハウスなどに発注する。 自分で作りたいなら少しは勉強して判らない所をもっと絞って質問しましょう。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルの関数?

    シート1に氏名と性別と生年月日を入力したデータがいっぱいあるとします。このデータは毎日増えていきます。 そこで、シート1の並べ替えを行なわずシート2に生年月日順に並べ替えたデータが並ぶようにする方法ってありますか?

  • Excel VBA 条件検索について

    ExcelVBAで 「データ検索後リスト表示をして、そのリストから該当するシートを選べば表示される」 というユーザーフォームを作成したいのですが、やり方がよく解りません。どなたか教えて下さい。 具体的には 「コマンドボタンが押された時に、ユーザーフォーム内のテキストボックスに入力された値(名称、日付等)と、複数のシート内のセルの値(名称、日付等)を比較して、一致(全一致、一部一致)した場合、ユーザーフォーム内のリストボックスに表示させる」 というものと 「リストボックスに表示されたものの中から見たいシートを選択すると、そのシートを表示する」 というものです。 リストの表示形式は シート名   名称  日付等 Sheet1    りんご  2013.01.01 Sheet2    りんご  2013.01.02 という具合にしたいと思っています。 ちなみに複数のシートと言いましたが、マスターシートを作りコピーして使用しますので、同一形式のものになります。 以上になります。 色々やってみましたが、うまくいきませんので、どなたか解る方は教えて下さい。 よろしくお願いします。

  • エクセル 生年月日(プルダウン)→年齢表示

    エクセルの操作についてお知恵を貸していただきたく、 よろしくお願いします。 シート1で和暦の生年月日をプルダウン式で選択し、 シート2でシート1で選択した生年月日の表示、同時に横のセルに 年齢を表示させたいと考えています。 試しに、「データの入力規則」より以下のリストを作成しました。 (1)A1に「明治、大正、昭和、平成」の和暦リスト (2)B1に「1~63」の年リスト (3)D1に「1~12」の月リスト (4)F1に「1~31」の日リスト が、シート2に生年月日を表示させることはできても、 年齢計算が出来ません。 (和暦・年・月・日を別々のセルに表示させる形になり、 生年月日として認識されないため) フォームコントロールのコンボボックスなどを使えば 実現できるのでしょうか? 何か良い方法があればご教授いただきたいです。 もしvbaなどで実現可能な場合は、マクロの式など教えて いただけると助かります。

  • VBAの検索入力

    FAX送信を簡単にしようと思い。VBAにて まず、シート2に顧客データを入力し シート1で1クリックで選択フォームから選んで、顧客名、FAX番号電話番号等がが出るようにはできたのですが、顧客データが多すぎて、フォームから選ぶのが大変で、検索項目を作り絞り出したやつから選ぶにしたいのですがなかなかうまくいきません。よい方法がありますか?

  • ExcelVBAのユーザーフォームでデータ反映方法。

    こんにちは。 詳しい方、お知恵をお貸しください。 Excelのワークシートに保持しているデータを ユーザーフォームのTextBoxに反映させたいのですが どのようにすればよろしいのでしょうか? ◎条件は以下のとおりです。 1.ユーザーフォームを表示させた時、TextBox(s1)にワークシート(ini) のセル(B1)を反映させる。 2.ユーザーフォーム上で編集可能な状態とし、OKボタン押下で TextBox(s1)のデータをワークシート(ini)のセル(B1)に反映・保存。 また、別ユーザーフォームで参照のみ可能な物を作っておりますが、 編集不可能な状態で表示させる方法も教えていただけたら嬉しいのですが。。。 どうぞ、よろしくお願いいたします。

  • Excel97で「ブック内のキーワード検索」がしたい(VBA?)

    Excelの表を、月別にシート分けしています(計12枚) 自宅→Excel2002、会社→Excel97を使っているのですが、 複数のシートにわたってキーワード検索したいと思い、自宅のExcel2002で[編集]-[検索]-「ブック」を指定して検索しました。 ところが会社に行って同じ操作をしてみると、Excel97のためシート内検索しか出来ません。 Shiftキーで複数のシートを選択してから検索をしてみましたが、思うような結果になりませんでした。 (Excel2000だと複数シート選択-検索が出来るようなのですが・・) 会社のExcel97で、Excel2002のような「ブック内検索」がしたいのです。 VBAのユーザーフォームで作成するしかないのでしょうか? もしそうであれば、どのように作成していけばよいのか、わかる方ご教授ください<(_ _)> 【希望】 ・テキストボックスにキーワード(氏名・数字など)を入力→検索ボタンを押す→該当のセルがアクティブになる(該当セルが複数あれば、検索ボタンを押すたびにアクティブになる、など) ・「該当のデータはSheet1のC5とSheet3のC10にありますよ」みたいな感じで、データの位置が表示される、など よろしくお願いいたします。

  • 生年月日を元に年齢を計算するテキストボックスを作成したのですが‥

    ACCESS 2003を使用しています。 プロパティシートのコントロールソース欄に計算式を入れ、フォームで生年月日を入力すると、確かにテキストボックスには年齢が自動計算されて表示されました。 ところが、カーソルが入ると自動計算された年齢が表示されるのですが、カーソルが次のボックスへ移動すると0になって表示されてしまいました。 書式の欄には「0歳」と入力してあります。 どの設定が間違っているのでしょうか。 わかる方、教えて下さい、お願いします。 説明不足は補足します。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • エクセルVBAで納期管理するために

    エクセルVBAで納期管理を目的として 受注状況の確認や追加受注の入力をしたいと思っています 入力フォームをつくり その中に「年月日・品番」などを入力(選択式で)できるようにしたいと思っています まず最初にその入力フォームの中に「納期」というタイトルのラベルをつくり テキストボックスに年月日の数字を入力するのではなく ドロップダウンリストで選択式にしたいのですが(コンボボックス?) リストに呼び出すために年月日にあたる数字を他のシートに用意するのですか? いろいろサイトをみてみたんですがよくわかりませんでした よろしくお願いいたします

  • ExcelVBA初心者

    いろいろとVBAサイトやQ&Aサイトを見ましたがあまりこれというのがなかったので質問させてください。 社員名簿を作成しているのですが、登録用フォームと検索用フォームの2つのユーザーフォームを使いデータを検索、入力ができるようにしたいのです。 登録用フォーム…ID、名前、生年月日、性別、住所を登録し、データ入力用シートへ転記する(登録用フォーム内には登録ボタンのほか、新規ボタン、データ訂正用ボタン、検索ボタンを配置する) 検索用フォーム…ID、名前、生年月日、性別、住所どれからでも絞込み検索ができるようにし、さらに絞り込んだリストを選び「選択して登録フォームへ」ボタンを押すと登録用フォームへジャンプし直接そのデータの書き換えができるようにしたい 形はできてきたのですがどうしてもわからず煮詰まってしまいました。 検索用フォームに配置したリストボックスの値のひとつを選び「選択して登録フォームへ」ボタンを押すと登録用フォームには飛ぶのですがどうやったらリストボックスで選択したデータがでてくるのかということです。 もしお分かりになられましたら教えてください。お願いします。

シリアル番号を調べる方法は?
このQ&Aのポイント
  • パソコンが壊れてしまった場合、前に契約したままのシリアル番号を調べる方法を教えてください。
  • ご利用の製品は筆まめVer.33で、パソコンのOSはWindows10です。
  • 質問内容はソースネクスト株式会社の製品・サービスについてのものです。
回答を見る