• 締切済み

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

特定文字を検索し、その行の座標を別のセルへ移すには、エクセル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を使用しております。 よろしくお願い致します。

みんなの回答

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

次のようなマクロにすればよいでしょう。 Sub 試験() Dim i, n As Integer Application.ScreenUpdating = False i = 1 Do i = i + 1 If Range("H" & i) = ":Q" Then n = i Do n = n + 1 If Range("H" & n) = ":M" Then Range("K" & n) = Range("A" & i).Value Range("L" & n) = Range("C" & i).Value Range("I" & n) = Range("A" & i + 1).Value Range("J" & n) = Range("C" & i + 1).Value Range("K" & n + 1) = Range("A" & i + 2).Value Range("L" & n + 1) = Range("C" & i + 2).Value Range("I" & n + 1) = Range("A" & i + 3).Value Range("J" & n + 1) = Range("C" & i + 3).Value Range("A" & i & ":A" & i + 3).EntireRow.Delete xlShiftUp Exit Do End If Loop Until Range("H" & n) = "" i = i + 3 End If Loop Until Range("H" & i) = "" Application.ScreenUpdating = True End Sub

noname#163245
質問者

お礼

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

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

関連する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行のデータをスペースで区切って各セルへ振り分けるには?

    いつもお世話になっております。 再びつまづいてしまったため、お教えいただきたく、宜しくお願い致します。 1行目はタイトル 2行目はデータ作成日 3行目は項目 が入力されております。 4行目からデータが入っているのですが、A列内に1行でまとまっている状態です。 個々のデータの間は半角スペースで区切ってあり、このスペースを利用して、3行目の項目のセルへデータを移動したいと考えております。 下記が表の状態です。 |   A  |   B   |   C  |D |E | 1|タイトル  | 2|データ作成日| 3|  番号  |都道府県コード|市町村コード|番地|備考| 4|012-3456789 04679 003 ●□△659-8 ◎●△□●~| 5|123-4567890 00367 048 ■○●△4-9-2 △●□~| 4行目からがデータ群です。B列から右側にはデータが存在しません。 理想は下記の通りです。 |   A  |   B   |   C  |   D   |E | 1|タイトル  | 2|データ作成日| 3|  番号  |都道府県コード|市町村コード|  番地   |備考| 4|012-3456789 |  04679   |  003   |●□△659-8 |◎●△□●~| 5|123-4567890 |  00367   |  048   |■○●△4-9-2|△●□~| 下記のように組んでみました。 Worksheets("Sheet1").select Range("B4").Select Dim c As Range Dim j As Variant For Each c In Selection j =Split(c.Value," ") c =Offset(0,0).Resize(1,UBound(j)+1)=j Next c End Sub 4行目のみ理想通りに動き、5行目からがどうしても動きません。 環境はExcelは2002です。 以上、宜しくお願い致します。

専門家に質問してみよう