• 締切済み

エクセルでの自動転記 検索ボタン

sheets1 A1   B1   C1   D1   E1  F1 日付  空白 名前 ふりがな 性別 備考 ↓ 順番に転記 ユーザーホーム コマンドボタンなどを使い sheets1の対応する場所に転記  また 検索ボタンで 名前検索をしたいのですが 検索は 苗字で検索  複数あれば複数表示 該当なければ表示しないか 0もしくは該当なし こういったものは 簡単にできますでしょうか?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

名前検索といっているのは、苗字で検索したいのか。 苗字と名前は(全部の人で統一して)全角か半角の1スペースで別れているのでしょうね。そういうことを書くのが大事なんだ。 それには見出し実例だけでなく、模擬データを質問異書くこと。 FindメソッドやFirutaやそのワイルドカード利用の方法もあるが、VBAはそんなに詳しくないだろう。だから泥臭いがわかりやすいコードにしておく。 ーー 例データ(こういうように簡略に模擬実例はかけるという見本) A2:B6 山田 三郎 江戸川区 木下 安雄 大田区 鈴木 一浪 横浜市 大田 五郎 三鷹市 鈴木 文雄 千葉市 D1セル 鈴木 コード Private Sub CommandButton1_Click() d = Range("a65536").End(xlUp).Row MsgBox d k = 2 For i = 1 To d p = InStr(Cells(i, "A"), Range("D1")) If p <> 0 Then Cells(k, "J") = Cells(i, "A") Cells(k, "K") = Cells(i, "B") k = k + 1 End If Next i End Sub ーー 結果 J2:K3 鈴木 一浪 横浜市 鈴木 文雄 千葉市 これを参考に勉強のこと。 得rつすうが増えても Cells(k, "K") = Cells(i, "B") いかが増えるだけ。 データ行数(のオーダー)も質問にいてないが、10000人以下なら処理速度も大丈夫だろう。 上記のコードは苗字に拘ってないが。 Instrの行でRange("D1")&" ”にすればそれらしくなろう。 なおじょうきはコマンドボタンはシートに貼り付けた例。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 便宜上、↓の画像のような配置でのコードです。 ユーザーフォームではなく、コマンドボタンをクリックするとインプットボックスが表示され、それに苗字のみ(最初の1文字だけでもOK)を入力するとH~M列に表示されるようにしてみました。 コントロールツールボックスから「コマンドボタン」を挿入 → コマンドボタンをダブルクリックしVBE画面に↓のコードをコピー&ペーストしてください。 (コードの1行目と最終行は表示されているはずですので、2行目以降を貼り付けます) Private Sub CommandButton1_Click() Dim i, j As Long 'この行から Dim str As String str = InputBox("苗字を入力してください。") j = Cells(Rows.Count, 8).End(xlUp).Row If j > 1 Then Range(Cells(2, 8), Cells(j, 13)).ClearContents End If For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(Range("C:C"), str & "*") = 0 Then MsgBox "該当データがありません。" Exit Sub Else If Cells(i, 3) Like str & "*" Then With Cells(Rows.Count, 8).End(xlUp).Offset(1) .Value = Cells(i, 1) .NumberFormatLocal = "m月d日" '←表示形式は適宜変更してください。 .Offset(, 1) = Cells(i, 2) .Offset(, 2) = Cells(i, 3) .Offset(, 3) = Cells(i, 4) .Offset(, 4) = Cells(i, 5) .Offset(, 5) = Cells(i, 6) End With End If End If Next i Columns("H:M").AutoFit 'この行まで End Sub 参考になれば良いのですが・・・m(__)m

mh1211
質問者

補足

tom04さん 回答ありがとうございます。 だいぶ エクセルから 離れていて2010ですので コマンドボタンだすのも手間取りましたが・・・・ すごいです。できるんですね。 検索に関しての ご指導ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

>ユーザーホーム コマンドボタンなどを使い マクロを使ってって事ですよね >sheets1の対応する場所に転記 この動作であれば、ボタンクリック時に行われる動作をマクロの記録で記録しする事で割りと簡単に対応できそうですね >検索ボタンで 名前検索をしたいのですが この操作もフィルター機能で絞り込む動作をマクロの記録で記録して、フィルターの条件指定の部分だけ少しマクロを変更すれば可能と思います 簡単と言えば簡単だけど、VBA知らないと難しいかな?

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

関連するQ&A

  • EXCEL VBA 転記 条件分岐 新規転記 上書転記 プログラム

    いつも御世話になっております。 以下のことをしたいのですが、詰まってしまいました。 皆様の力をお借りしたいと思い、書き込ませていただきます。 ・ボタン1をクリックすると、base(転記元)のG列に書かれた事項と同一のシート(転記先)へ転記する(各シートA,B,Cへ転記) ・転記先のE列を見て、既存のものであれば、上書きする ・転記先のE列を見て、新規のものであれば、空いている行を探し転記する。 (例) base(転記元シート) E1|F1|G1 名前 収入 シート先 月曜 50 A 火曜 100 A 木曜 150 C 土曜 50 A 日曜 100 B 水曜 150 A 金曜 10 C 転記実行前 A(転記先シート) E1|F1|G1 名前 収入 シート先 月曜 A 火曜 A 土曜 A 転記実行後 A(転記先シート) E1|F1|G1 名前 収入 シート先 月曜 50 A 火曜 100 A 土曜 50 A 水曜 150 A 以下に作成したプログラムを記述します。 が、IF文に関するエラーが生じております。 Sub ボタン1_Click() Dim dstSheet As Worksheet Dim srcRow As Long Dim dstRow As Long Dim name As Integer Dim obj As Object Set srcSheet = Sheets("base") For srcRow = 2 To srcSheet.Range("G" & Rows.Count).End(xlUp).Row '元シートのデータ範囲で繰り返し(シート先は必須なのでG列でチェック) If srcSheet.Range("G" & srcRow).Value <> "" Then '(転記先シート名)が空白でない場合に実行(1) Set dstSheet = Sheets(srcSheet.Range("G" & srcRow).Value) 'シート取得(1) name = Sheets(srcSheet.Range("E" & srcRow).Value) '名前を取得(1) Set obj = Worksheets(dstSheet).Cells.Find(name) '名前を転記先の中で検索(1) End If '(1)の終了 If obj Is Nothing Then '検索でかからなかったら、新たに空白の行を見つけて転記元から転記先へ転記する(3) '以下3行問題点???? dstRow = dstSheet.Range("G" & Rows.Count).End(xlUp).Row + 1 '転記先行取得 If dstSheet.Range("E2") = "" Then dstRow = 1 '質問で転記先には1行目からなので、それに対応 dstSheet.Range("E" & dstRow).Resize(1, 3).Value = srcSheet.Range("E" & srcRow).Resize(1, 3).Value 'データ転記 End If Else '検索でかかったら、該当の行のアドレスを割り出し、特定の範囲を上書きする。(4) lngYLine = obj.Row intXLine = obj.Column With Sheets(dstSheet) '検索でかかったら、該当の行のアドレスを割り出し、特定の範囲を上書きする。(4) dstSheet.Range("E" & lngYLine).Resize(1, 3).Value = srcSheet.Range("E" & srcRow).Resize(1, 3).Value 'データ転記(4) End If '(3),(4)の終了 Set obj = Nothing 'Objの初期化 Next End Sub

  • フリガナ検索について

    同じような質問があったらすみません。 過去質問も見ましたが、あまりよく理解できなかったので質問させていただきます。 顧客名簿のフリガナ検索をしたいのです。 テーブルには顧客情報に必要な、名前 フリガナ 住所 電話番号 とあり、フォームもそのテーブルを元に作成しています。 そして、そのフォームにテキストボックスをつくり、コマンドボタンで 実行をしたいのです。表示方法はフォームで・・・・。 例えば「サトウ」とテキストボックスに入力し、コマンドボタンを押すごとに、「サトウ」の苗字の人がフォームで次々と表示されるようなのが理想です。 お時間があるときに、教えていただけないでしょうか? 宜しくお願い致します。

  • アクセスでフリガナ検索をしたいのですが

    フリガナが濁点の場合はどうやって検索したらよいのでしょうか? ※状況※ 従業員名簿があります。 名前・フリガナ・住所です。 【た】というコマンドを作成しました。 このコマンドを押す事によってフリガナが【タ】【ダ】で始まる人のみ表示 をさせたいのです。

  • Excel VBA 別ブックを開かずに転記

    Excel2007のユーザーフォームについて教えてください。 ユーザーフォームを以下のように作成しました。 ■テキストボックス6つ テキストボックス2→件名 テキストボックス3→数 テキストボックス4→名前 テキストボックス5→備考1 テキストボックス6→備考2 ■コマンドボタンが1と3の2つです。 コマンドボタン1→転記と印刷 コマンドボタン3→終了 ■シートの構成  sheet"作成と一覧"   1行目を以下の項目で使用しています。  A1→番号(テキストボックス1を表示)  B1→件名(テキストボックス2を表示)  C1→数(テキストボックス3を表示)  sheet"印刷"  A1→番号(テキストボックス1を表示)  A2→件名(テキストボックス2を表示)  B2→数(テキストボックス3を表示)  A3→名前(テキストボックス4を表示)  A4→備考1(テキストボックス5を表示)  A5→備考2(テキストボックス6を表示) テキストボックスに入力した値を2つのシートにそれぞれ転記して、 シート"印刷"を2部印刷しています。 ここまで以下のコードで行いました。 Private Sub CommandButton1_Click() '入力値を作成と一覧シートに転記 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm1.TextBox1.Value Cells(行, 列 + 1) = UserForm1.TextBox2.Value Cells(行, 列 + 2) = UserForm1.TextBox3.Value '入力値を印刷シートにに転記 Worksheets("印刷").Range("A1") = UserForm1.TextBox1.Value Worksheets("印刷").Range("A2") = UserForm1.TextBox2.Value Worksheets("印刷").Range("B2") = UserForm1.TextBox3.Value Worksheets("印刷").Range("A3") = UserForm1.TextBox4.Value Worksheets("印刷").Range("A4") = UserForm1.TextBox5.Value Worksheets("印刷").Range("A5") = UserForm1.TextBox6.Value 部数 = 2 Worksheets("印刷").PrintOut Copies:=部数, Collate:=True UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub Private Sub CommandButton3_Click() '終了ボタンで値をクリアしてウィンドウを閉じる Dim Ctrl As Control For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then _ Ctrl.Value = "" Next Ctrl Unload Me End Sub 教えて頂きたい事なのですが・・・ コマンドボタン1の入力値を作成と一覧シートに転記の所なのですが、 アクティブセルではなく、常にA列の最後の値の次の空白行に転記するようにしたい場合、 どのように書き換えればいいのでしょうか? もう一点ですが、 別ブックにテキストボックス1から6が入力された一覧があります。 この別ブックを開かずに、 テキストボックス1に入力された番号を探して、 テキストボックス2から6に表示されるようにしたいのです。 うまく説明できないのですが・・・ 別ブックの名前は"たちつ" 別ブックは、あいうサーバーの かきくフォルダの中のさしすフォルダです。 ブック"たちつ"に"一覧"というシートがあります。 一覧のシートのD列の3行目以降には番号が入力されており、日々増えています。 テキストボックス1に入力された番号を、 一覧のD列から探し、 I列の値をテキストボックス2へ K列の値をテキストボックス3へ L列の値をテキストボックス4へ M列の値をテキストボックス5へ J列の値をテキストボックス6へ転記させたいのです。 同じブックの別シートを参照するときには Application.VLookupで出来たのですが、 マクロの記録でやってみても、解決できませんでした。 コードをご覧いただいてお分かりの通り、 VBA超初心者です。 ネットを見ながら試行錯誤している状況です。 コードの間違い等あるかもしれませんが、 ご教示よろしくお願いいたします。

  • エクセル 行ごと検索結果を表示したい

       A  B   C    D    E  F   G   H   I 1 カナ 漢字 住所 備考 (空白) カナ 漢字 住所 備考 2 カナ 漢字 住所 備考 (空白) カナ 漢字 住所 備考 というような住所録があります。 別シートのA1セルに検索したいキーワードを入力し、 該当するセル全てを表示できるようにしたいのです。 ただ、検索結果はA1~D1、F1~I1、 というようにセットで表示できるように。 このようなことができるような方法(関数?)はありませんでしょうか? エクセル初心者ですので、詳しく教えていただけると助かります。 よろしくお願いします。

  • エクセル2010のvbaとコマンドボタンについて

    vbaで押されたコマンドボタンの (ActiveXコントロールのイメージやラベルなど) 名前を取得することはできますか? ActiveControl.NameはSheets(1)をつけると オブジェクトは、このプロパティまたはメゾットをサポートしていません とエラーが出て、Sheets(1).を取るとオブジェクトが必要です とエラーが出て上手くいきません フォームコントロールのボタンは右クリックできないので ActiveXコントロールのコマンドボタンを使用しています 回答お願いします

  • エクセルVBA ユーザーフォーム 検索

    現在VBAにてユーザーフォームにて入力したデータをシート1に転記するものを作成しました。 この転記したデータを生かして作業したいと考えております。 データは商品データで A    B C E F 商品コード 商品名  区分  単価  備考 となっており ユーザーフォームも TEXTBOX1=A TEXTBOX2=B と言う様になってます。 現在考えているのがこのデータの一部を変更したい場合、コマンドボタンを押すと商品コード入力用boxがでてきて、商品コードを入力するとA列から検索し該当する商品データをユーザーフォーム上に表示するようにしたいのです。 そのデータがA75行にあったとします。 そのユーザーフォーム上で単価を変更した場合検索した行(A75行)にそのまま上書きする様にしたいです。 説明がうまくできてないかも知れませんが、どなたかご教授願います。

  • エクセルVBA データの転記に関して質問です

    在庫管理の為に以下の通りに作成をしています。 (1)シート1からシート2へデータを転記したい。 (2)シート1からシート2へデータを転記した時シート2にはデータが蓄積されていきます (3)シート1のコピー範囲には空白のセルが含まれています。 (4)シート1の空欄の一部は数式による空白があります。 シート1 C8入庫年月日 C9伝票番号 C10品名 C11品番 C12単位 C13数量 C14単価 C15金額 C16入荷先 C17備考 シート2 C4入庫年月日 C5伝票番号 C6品名 C7品番 C8単位 C9入庫数量 C10単価 C11金額 C12入荷先 *C17は転記しません。 以下のとおりに記述しました。 Dim ab As Long Dim cd As Long Range("C9:k18").Copy Sheets("1").Select Cells(Rows.Count, 3).End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=True, Transpose:=False ab = Range("H" & Rows.Count).End(xlUp).Row For cd = ab To ab + 10 Step 1 If ActiveSheet.Cells(cd, 8) = "" Then Rows(cd).Delete shift:=xlUp End If Next cd Sheets("2").Select Application.CutCopyMode = False Range("e6").Select End Sub この記述で実行すると、1度目の転記はうまくいくのですが2回目の転記をしたときに空白行が入り、空白行の下に2回目の転記が行われてしまいます。 どうしたら空白行を無視して2回目の転記がうまくいくでしょうか? VBA初心者です。よろしくお願いします。

  • エクセルVBAのボタン操作について

    sheet1にコマンドボタン(CommandButton1)を貼り付けて sheet2にもコマンドボタン(CommandButton1)を貼り付けています。 sheet1のコマンドボタンを押すとVBAで処理をして sheet2を表示後 自動的にsheet2のコマンドボタンにかかれたVBAの処理をしたいのですがうまくいきません。 教えてください。 環境windows2000 office 2000 sheet1のボタンの最後 Sheets("2").Select ActiveSheet.Shapes("CommandButton1").Select でうまくいきません。

  • エクセル 検索結果の抽出方法

       A  B   C    D    E  F   G   H   I 1 カナ 漢字 住所 備考 (空白) カナ 漢字 住所 備考 2 カナ 漢字 住所 備考 (空白) カナ 漢字 住所 備考 というような住所録があるのですが、 別シートで検索結果を表示できるようにしたいのです。 検索方法は「カナ」であったり「漢字」であったりと様々 検索結果全てをA~D、F~Iというようにまとめて表示 このようなことができるような方法(関数?)はありませんでしょうか? よろしくお願いします。

専門家に質問してみよう