エクセルVBAで特定文字を検索し、座標を移動する方法

このQ&Aのポイント
  • エクセルVBAで特定文字を検索し、行の座標を別のセルに移動する方法について教えてください。
  • 具体的には、H列に「:Q」がある行を検索し、該当する行のI,J,K,L列に座標を移動したいです。
  • 移動先の列は必ず「:M」となっており、最終的には「:Q」の行を削除したいです。エクセルは2007を使用しています。
回答を見る
  • ベストアンサー

特定文字を検索し、その行の数字を別のセルへ移す

特定文字を検索し、その行の座標を別のセルへ移すには、エクセルVBA では どのようなコードを記入すればよろしいでしょうか? H列に記入されている「:Q」がある行を検索します。(黄枠) その行を確認すると番地の列にA10(緑枠)、A30(赤枠)という文字があります。 8行目と10行目の同じように番地の箇所にA10又はA30と記入してある行の I,J,K,Lに(緑枠)、(赤枠)の行のXとYの座標を移動できないでしょうか? ・移動先行のH列は必ず「:M」と記入してあります ・座標を移動した後は、最終的に「:Q」の行は削除します ・図では、4行目の座標がK,L、5行目の座標がI,Jに来ていますが、逆でも大丈夫です。 (6,7行目も同じです) エクセルは2007を使用しております。 よろしくお願い致します。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>移動先行のH列は必ず「:M」と記入してあります 簡単のため「:Q」の番地に対応する「:M」の番地は「必ず用意されている」とします。 また「:」の文字や、QやMの「全角半角」は「間違いなくご相談に情報提供されているのと一致して統一できている」とします。 マクロ自体は淡々と「無くなるまで繰り返す」だけの、単純な構造でできます。 手順: ALT+F11を押してVBE画面を開く 挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim h as range  dim Target as range ’Qのデータを探す  set h = range("H:H").find(what:=":Q", lookin:=xlvalues, lookat:=xlwhole)  do until h is nothing  ’Mの行を探す   set target = range("E:E").find(what:=cells(h.row, "E").value, lookin:=xlvalues, lookat:=xlwhole)   do until cells(target.row, "H") = ":M"    set target = range("E:E").findnext(target)   loop  ’移動する   cells(target.row, "IV").end(xltoleft).offset(0, 1).value = cells(h.row, "A").value   cells(target.row, "IV").end(xltoleft).offset(0, 1).value = cells(h.row, "C").value   h.entirerow.clearcontents  ’または  ’h.entirerow.delete shift:=xlshiftup   set h = range("H:H").find(what:=":Q", lookin:=xlvalues, lookat:=xlwhole)  loop end sub ファイルメニューから終了してエクセルに戻る ALF+F8を押してマクロを実行する。

n151713m
質問者

お礼

勉強になりました。 ありがとうございました。

関連するQ&A

  • 特定文字を検索し、その行の座標を別のセルへ移す

    特定文字を検索し、その行の座標を別のセルへ移すには、エクセルVBA では どのようなコードを記入すればよろしいでしょうか? H列に記入されている「:Q」がある行を検索します。(黄枠) その行を確認すると番地の列にA10(緑枠)、A30(赤枠)という文字があります。 8行目と10行目の同じように番地の箇所にA10又はA30と記入してある行の I,J,K,Lに(緑枠)、(赤枠)の行のXとYの座標を移動できないでしょうか? ・移動先行のH列は必ず「:M」と記入してあります ・座標を移動した後は、最終的に「:Q」の行は削除します ・図では、4行目の座標がK,L、5行目の座標がI,Jに来ていますが、逆でも大丈夫です。 (6,7行目も同じです) エクセルは2007を使用しております。 よろしくお願い致します。

  • 2行のセルの入れ替え。

     初めまして、よろしくお願いします。  セルに A B C D E F G H I J K L 1 a b c d e f 2 g h i j k l 3 m n o p q r 4 s t u v w x 5 " ・ " ・ " ・ " 100 "  という表があります。これを A B C D E F G H I J K L 1 a b c d e f g h i j k l 2 m n o p q r s t u v w x 3 " 4 " 5 " ・ " ・ " ・ " 100 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

  • エクセルで、検索し適合したセルと同行にある数値を数値の小さいものから順番に10個ほど別シートに表示させたいのですが。

    例えば、シート1に項目Aに種別が複数記入され、 項目Bに種別に対応した規格が何種類か記載されています。 項目A,Bにはそれぞれ同じ種類のものが複数記入されていますが、 それをシート2で、あるセルに種別を記入してあり、 その種別ごとに、規格の数値を小さいものから順番に(同じ規格のものは表示しない)列方向に10個程度表示させたいのですがやりかたがわかりません。ご教授お願いします。 □シート1     列1  列2 行1  種別  規格 行2   H  100 行3   H 200 行4   H  100 行5   H  350 行6   L  40 行7   L  60 行8   L  75 行9   L  60 行10  L  40 これをシート2で、     列1  列2 行1  種別  H 行2  項目  規格 行3   1  100 行4   2  200 行5   3  350 行6 行7  種別  L 行8  項目  規格 行9   1  40 行10  2  60 行11  3  75 上記のようなものを作成したいのですが、 わかるかたがいれば項目の数がAND条件で複数ある場合の式も教えていただけないでしょうか?

  • エクセル VBA 特定文字がある行を別シートに移動

    C列にA,B,C,D,E(赤枠部分)の文字列が入力された表があります。 マクロ実行時下記のようにするには、VBAのコードをどのように記入すれば、よろしいでしょうか? AとBが入力されている行をシート2にコピー Cが入力されている行を切り取りしシート2に貼り付け(下の行は上方向にシフト) Dが入力されている行を切り取りしシート3に貼り付け(下の行は上方向にシフト) Eが入力されている行を切り取りしシート3に貼り付け(下の行は上方向にシフト) エクセルは2000及び2007です。 よろしくお願い致します。

  • エクセルで行内特定文字で色塗り、特定文字非表示。

    エクセルで行内特定文字で色塗り、特定文字非表示。 エクセル2000です。 B列30から10-50-01~20、11-51-01~30とかの連番番号、C列30から O列30までの行に各情報入力がしてあります。 行いたいのは、B列30以降に10-50-01~20と記入してあれば-01の行中の F、G、H、J、K、L、M、Oと、とびとびですが、文字表示をさせ、それ以外は (-02から-20まで)非表示(白色文字色)とし、かつ、K30以降のセル内に「OK」の文字が 入力されると、その行だけセルに色つけをしたいです。 書式でできますでしょうか? 現在、=RIGHT($B30,3)<>"-01"で-01を表示、それ以降は非表示させていましたが、K30以降のセル内に「OK」での行に色つけが必要になり、方法がわかりません。 よろしくお願いします。

  • エクセル VBA 特定文字がある行を別シートに移動

    ソフト excel2003 I列(赤枠部分)に文字列が入力された表があります。 マクロ実行時下記のようにするには、VBAのコードをどのように記入すればよろしいでしょうか? 『 △ 』ボタンをクリックすると シート1の赤枠内のセルに△が入力されている行を切り取りしシート2に貼り付け (下の行は上方向にシフト) 『 × 』ボタンをクリックすると シート1の赤枠内のセルに×が入力されている行を切り取りしシート3に貼り付け (下の行は上方向にシフト) ※ シート1の内容は日毎に更新されますので、更新後、『 △ 』ボタンをクリックするとその時点で△が入力されているものはシート2のリストへ追加され、『 × 』ボタンをクリックすると×が入力されているものはシート3のリストへ追加されるようにしたいです。 急ぎの仕事なので、困っています。 宜しくお願い致します。

  • エクセルのセルを参照して別シートに張り付ける2

    こんにちは。 エクセルのsheet1とsheet2があり、sheet1のセルに入力されている文字や数値をsheet2にコピーしたいと思っています。(sheet2には値として張り付けたい) <条件> sheet1の3行目から下(3000行目まで)をコピーしてsheet2の2行目から下(3000行目まで)に張り付けたい。 しかし、下記のように列も入れ替えたい。下記以外はコピーしない。 sheet1   sheet2  A  →  A  G  →  B  H  →  I  M  →  G  Q  →  K R+S  →  L  (sheet1のR列とS列の文字を結合したもをsheet2のL列に)  T  →  M  U  →  N このような作業を1回で行うことはできるのでしょうか? よろしくお願いします。

  • 同じ文字列がある場合、行を合わせたい

    A列に品番、B列に型式、C列に数量、D列に品番、E列に型式、F列に数量の 項目があります。 A列~C列とD列~F列をそれぞれ一つの固まりとします。 A列(赤枠)とD列(青枠)の品番がそれぞれ同じ場合、 A列~C列とD列~F列の行を合わせたいのですが、 その場合、エクセル、VBAではどのようなコードを記入すればよろしいでしょうか? ※添付図参照ください ※リストの数は、毎回違います。 エクセルは2010,2007を使用しております。 回答よろしくお願い致します。

  • マクロを使って特定の文字の入った行を非表示にしたいのですが・・

    エクセルのマクロを使って 自分の選択した範囲内で L列に"摘要"かつK列に"金額"の文字が入っている行と L列が空白かつD列も空白である行 を削除するようにするにはどうしたらよいでしょうか 仕事の中でこれがマクロでできるようになるとすごく便利なので・・。よろしくお願いします。

  • 1つのセルに入っている7つの数字を分解する方法。

    どなかたご存じでしたらご回答よろしくお願いします。 【質問】  エクセルワークシートのA列、B列、C列、D列にそれぞれ1行当たり 7つの数字が  入っているのが最大5行あります。これをエクセル機能である「区切り位置」を使わずに  1行を7列に分割する(実際には4列×7=28列)方法が知りたいです。  下記にイメージ図を書きます。  理想は、マクロが入ったワークシートに貼り付けてからボタンを押下すると分割された  結果がE列以降にでてくるのが良いです。 ★質問のイメージ図・・・分割前       A             B             C             D  01 06 08 13 16 22 25 07 18 19 23 28 30 33 02 06 10 23 28 34 37 04 10 16 18 19 23 37 03 12 23 24 25 29 36 03 09 15 17 18 34 36 11 18 26 27 33 35 36 13 16 21 26 27 32 37 04 07 19 20 28 33 36 01 06 17 25 26 30 35 02 06 12 13 17 19 32 04 09 11 15 16 31 34 01 10 14 20 24 29 35 05 12 14 22 24 28 37 03 15 21 29 30 32 36  05 11 17 19 24 27 32 01 06 07 08 29 33 35 08 15 24 26 28 31 34 ★質問のイメージ図・・・分割後(E列~AF列まで入る) E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD・・・・・ 01 06 08 13 16 22 25 07 18 19 23 28 30 33 02 06 10 23 28 34 37 04 10 16・・・ 03 12 23 24 25 29 36 03 09 15 17 18 34 36 11 18 26 27 33 35 36 13 16 21・・・ 04 07 19 20 28 33 36 01 06 17 25 26 30 35 02 06 12 13 17 19 32 04 09 11・・・ 01 10 14 20 24 29 35 05 12 14 22 24 28 37 03 15 21 29 30 32 36 05 11 17 19 24 27 32 01 06 07 08 29 33 35 08 15 24 26 28 31 34 【注意事項】  ・1つのセルに入っている7つの数字の間には、「半角スペース」が入っています。  ・分割後の結果はE列以降に出力します。  ・「最大5行」と書きましたが、1行しか無い場合もありまし、5行以上ある場合もあります。  ・使用するエクセルは2010です。 以上、よろしくお願いします。 

専門家に質問してみよう