Excelでキーワード検索後に同行別列に移動するマクロ(VBA)

このQ&Aのポイント
  • Excelで商品コードを検索して同行の出荷日を入力する作業を効率化するために、VBAを使用したマクロを作成したいと思っています。
  • データベース内の商品コードを検索し、該当する場合は出荷日のセルをアクティブにする自動化を目指しています。
  • VBAの構文については初心者ですが、具体的な構文のアドバイスをいただけると助かります。
回答を見る
  • ベストアンサー

Excelでキーワード検索後にその同行別列に移動するマクロ(VBA)

エクセル(Excel2002)のシート内に商品コード、商品名、製造年月日、・・・出荷日と並んだレコードが2千件程あるデータベースがあるとします。 そのデータベース内のA列の「商品コード」を検索して、該当データのX列の「出荷日」にデータを入力するという作業を、 Ctrl+Fの検索ダイアログで該当商品コードを入力しEnter→該当するA列の商品コードにヒットする→Escキーでダイアログを消す→マウスで同行の「出荷日」X列をクリック→出荷日を入力 という行程で作業しています。 それを、マクロを実行すると検索ダイアログBOXが表示され→検索値(商品コード)を入力してEnter→該当データがある場合は、検索ダイアログBOXが自動的に消え、そのレコードのX列(出荷日)がアクティブになり出荷日が入力できる状態になる。 該当商品コードがない場合は”ありません”というメッセージを出す。 としたいと思っております。 検索&入力しなくてはいけないデータは数百件あり、少しでも効率よく作業できないかと悩んでおります。 VBAはまだまだ勉強中で、こちらのサイトでみなさんが解答されているものを引用する程度しか出来ない初心者ですが、宜しければ具体的な構文を教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

No.1です。補足拝見しました。 1行目に「出荷日」という文字列が入力されている列を探して、その列が選択するように修正してみました。一応「出荷日」という項目がない場合はエラーメッセージを出すようにしています。 Sub 出荷日入力()  Dim Code As String  Dim R As Range, S As Range  Set S = Rows(1).Find(What:="出荷日", LookAt:=xlWhole)  If S Is Nothing Then   MsgBox ("出荷日の列が見つかりません")   Exit Sub  End If  Code = InputBox("商品コードを入力してください")  Set R = Columns("A").Find(What:=Code, LookAt:=xlWhole)  If R Is Nothing Then   MsgBox (Code & "は登録されていません")   Exit Sub  End If  Cells(R.Row, S.Column).Select End Sub

happy_goo_001
質問者

お礼

すみません、「お礼」を記すつもりが「補足」に記してしまいました。 内容はお礼です。

happy_goo_001
質問者

補足

又々的確なマクロを教えて頂きありがとうございます! テスト環境で試して見た所、ばっちり出来ました♪ 明日職場で実行するのが楽しみです。 o(^-^)o 先に解答頂いたマクロと比較して、「へぇ~こうなるのか・・・」と大変勉強になりました。 昨日からVBAの入門書を読みふけり、ほんの少しだけわかるようになったものの(かなり低いレベルでですが)、直ぐにはやりたい事を記述できる訳もなく、明日は地道にやるしかないかぁ・・・と諦めていた所なので、教えていただいて本当に嬉しいです。 これに味をしめてまた質問しちゃうかもしれませんが、ご縁がありました際は宜しくお願いします。 本当にありがとうございました。 m(__)m P.S Alt+F11 活用させてもらってます。便利ですね♪

その他の回答 (1)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

こんな感じでしょうか。Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 Sub 出荷日入力()  Dim Code As String  Dim R As Range  Code = InputBox("商品コードを入力してください")  Set R = Columns("A").Find(What:=Code, LookAt:=xlWhole)  If R Is Nothing Then   MsgBox (Code & "は登録されていません")   Exit Sub  End If  Cells(R.Row, "X").Select End Sub 貼り付けたらVBAの画面は閉じ、Excelの画面からAlt+F8でマクロを実行してください。Alt+F8で出てくるマクロの画面から「オプション」でショートカットキーを設定するか、画面にボタンを配置してマクロを割り当てたら便利かと思います。

happy_goo_001
質問者

補足

早速教えて頂き、真にありがとうございます! まさにやりたい事を完璧に出来るマクロを教えて頂き、嬉しくてたまりません! ヾ(〃^∇^)ノ♪ 本当にありがとうございました。 これで作業は格段に早くこなせるので十分なのですが、欲を出してもう少しだけ質問させて頂くと、実際検索するシートは3シートあり、最終的に入力したい「出荷日」は、最初のシートではX列にあっても、2つ目のシートのシートではY列にあります。  Cells(R.Row, "X").Selectを、X列を指定するのではなく、”出荷日”が入力されている列という構文にする事も出来るでしょうか? 宜しくお願いします。

関連するQ&A

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

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

  • エクセルVBAマクロ検索について

    エクセルで検索してフラグを立てるマクロを教えてください。 A列  B列   C列   D ・・・・・ NO.  日付1  日付2  というリストがあり、A列からNOを検索してB列に日付のフラグを立てる作業をしたいのですが、 まず日付を入力するボックスで設定させてから、A列のIDを検索し、 該当IDのB列にその日付をフラグ入力させるというものです。 このときフラグ入力された該当IDのある列が表示されるようにします。 もしも既に日付フラグが立っているものがあれば、「重複です」等のメッセージボックスが出るか、 またはC列に新たな日付フラグが立つようにしたいです。 それと、上記マクロでA列を参照してB列にフラグという内容を違う列に変える場合(同類の違うリストでもこのマクロを活用したいため)、参照列とフラグ列はマクロでどこを直せばいいのか教えていただけると助かります。 いろいろ自力で調べては見たのですが、知識不足でお力を貸していただけると幸いです。 よろしくお願いいたします。 

  • エクセルのマクロについて教えて下さい。

    添付した画像の様な注文管理シートがあります。 バーコードリーダーを使ってバーコードのJANを読み取り、該当する商品を検索したいです。 商品コードは 自社コード/JAN の形式になっています。 入荷した商品のバーコードを読み取ると、該当する商品のD列に読み取った日付を自動的に入力したいです。 その際に、既に入荷している商品はスキップして、未入荷の商品を検索する方法を教えて下さい。 例えば、 JAN 49000001 のバーコードを読み取った場合、D10に本日の日付を入力したいです。 また、バーコードを読むと、該当するセルにカーソルが移動する方法も合わせて教えて頂きたいです。 こちらも既に入荷している商品はスキップして、未入荷の商品を検索したいです。 例えば、 JAN 49000002 のバーコードを読み取った場合、A12にカーソルが移動する様にしたいです。 関数やマクロ等を使用して、これらを行う方法を教えて頂きたいです。 よろしくお願いします。 動作環境 windows 7 PRO エクセル2010 バーコードリーダー BC-BR900L 補足 出力用のデータの入力先はセルにしたいと思います。 特にセルでなくてはならない理由は今の所ありませんが、空いた列を使用したいです。 この例だとE列でお願いします。 カーソルの移動の理由ですが、作業の工程が違うので、カーソル移動が必要です。 日付を入れる方は、商品の荷受け作業の際に使用します。 バーコードを読んで、どの注文分の商品が該当するかを付け合わせる際に使用したいです。 カーソルの移動は、発送作業の際に使用します。 バーコードを読んで、どの発送分かを確認する際に使用したいです。 実際のシートには、顧客情報や注文番号などのセルが存在しています。 それらの情報を確認する際に使用したいです。 わかりにくい説明で申し訳ありませんが、どうかよろしくお願いします。

  • エクセルで別ブックを検索するマクロ、VBA

    エクセルで以下の処理を行えるマクロを作成したいです。 当方、マクロについてほとんど知識がありません。 恐縮ですが、教えていただけると嬉しいです。 ・主にしたいこと  [検索]ブックで一致するコードを探して、  [結果]ブックの対応するコードの行にそれぞれの項目を返したい。 ●ブック1 [検索]  シートが12個あります(それぞれ、1、2、3…12というシート名=1~12月分)  ↓各シートの内容    A    B    C    D 1  氏名  数値  コード  内容 2  abc   111  SS1234 あいうえお 3  bcd   123  SS3456 かきくけこ ・ ・ ・ といった感じです。 12個のシートの中身はそれぞれ似たようなものですが、 「コード」や「内容」などは少しずつ違います。 ●ブック2 [結果]  ↓シートの内容    A    B    C    D 1  氏名  コード  内容  数値 2      SS3456 3      SS1234 ・ ・ ・ といった感じです。 (注)検索用ブックとは列の並びが異なっています。 ここでやりたいことの詳細ですが、 ・[結果]ブックの「コード」(B列)にコードを入力すると、  [検索]ブックで一致するコードを検索し、  A列「氏名」、C列「内容」、D列「数値」に、[検索]シートの内容を  自動的に表示させたい。  (ただし[結果]ブックに入力した「コード」は、[検索]ブックの1~12のうち、   どのシートにあるかわからない) ・入力したコードが見つからない場合は何も表示しない。 ということです。 最初VLOOKUP、MATCH等の関数で表示することを考えましたが、 シートが複数にまたがっているのと、 列の並び方が[検索][結果]ブックで違うのでわかりませんでした。 長くなってしまい申し訳ありませんが、どうかおしえてください。 よろしくお願いします。

  • EXCEL VBA マクロ 印刷

    ・Aさん、Bさん、Cさん、~ Xさんと26人がいます。 ・A列には、それぞれ上記の担当者名が入ってます。 ・B列以降には、担当の商品名・数量などが入っているとします。 ・必ずしも、全員のデータが入っているとは限りません。(その日により、違います。) →上記のうち、A列がCさんのデータ(行)だけを抜き出し、印刷することは可能でしょうか?該当がなければ、マクロを終了させたいのですが・・ よろしくお願いいたします。

  • エクセルマクロで出来れば‥

    宜しくお願いいたします。エクセルでY列に商品名があります。そして、N列からX列までその商品のコードが書かれてます。何故1個のコードのものと、10個近くあるものがあるかというと、画像では書いてませんが、実は、味違いの各種があるということです。コードは抜き取りましたが、名前は一つにしてあるのです。これを、帳票からこのコードを使い各データをブイルックや、インデックス、match関数でデータを抜き取りたいのですが、横にコードを、記載したので、空白行を入れて各コードを縦書きに独立させたいのですが、手作業だと、行がいっぱいあるので、時間のロスが出てしまいます。何かいい方法あるでしょうか?お力お貸しください。

  • EXCELでの検索マクロを作りたいのですが

    マクロの初心者です。氏名の検索マクロを作成したいのですが分かりません。 A列:名前 B列:郵便番号 C列:住所 と 名前等のデータを(ランダムに)入力したシート1を作成し、 シート2にシート1の「A列:名前」から性(たとえば青木)で検索して検索ボタン(マクロボタン)を押して該当データを表示させるようにしたいのですが。

  • EXCEL VBAで文字列の検索とコピー

    検索したい文字をinputboxで入力して、A列を検索して、検索文字を含むセルをコピーして、そのコピーしたデータを、別のシートに貼り付ける、次に該当したセルをさっきコピーしたデータの次の行に貼り付けて・・・。とデータが入力してある最終行までの繰り返し、をやりたいのですが、ご指導の程、説明が下手ですが宜しくお願いします!

  • データベースを検索するマクロ(エクセルで)

    エクセル初級者です。 データベース化してある顧客名簿がsheet2にあり、A列は個人別コードが、B列は氏名、C列は郵便番号、D列は住所、・・・といった感じになってます。 教えていただきたいのは、sheet1上で氏名を入力して検索するフォームを作り、検索の結果、ヒットしたすべてがsheet3上に抜き出す方法って可能ですか? うまくいえないのですが、例えば「佐藤」と入力して検索ボタンを押せば、sheet2のすべての佐藤さんのデータがsheet2の形式と同じ形でsheet3に表示されるようにしたいのです。 情報に不足があれば補足しますので、どなたかVBAの書き方を教えてください。よろしくお願い致します。

  • EXCELマクロ 検索

    Excelマクロで 検索とその結果のコピーを行いたいのですが、全くの素人のためご教授願えればと思います。 Excel2002で 2つの表から共通する部分をKEYに付随するデータ抜き出したいと思っています。関数VLOOKUPを使えば簡単な作業かと思いますがVBAではそのVLOOKUPやFIND、それにLOOPなどの使い方が今ひとつ理解 できません。 具体例として 表1には A-Z列まで約1000行のデータが存在します。 表2は表1と同じシート上の直ぐ隣列AA-AK列まで表1より必ず多い行数のデータが存在します。また表1のA列にあるデータは すべて必ず表2のAA列に含まれます。 行いたい作業は、VLOOKUPのような検索で、表1A列と表2AA列に共通したデータがあった場合、表2の該当セルを基準としてALからBJ列セルに表1の該当行のデータB-Z列をすべてコピー貼り付けすることです。 A・AA列とも同列内では重複も空白もなくソートされています。 これら以外の列には同じValueのデータや空白が存在します。またデータ件数(行数)も表1・2とも一定ではなく都度変動します。 解りやすくご説明いただけると幸いです。宜しくお願いいたします。

専門家に質問してみよう