• 締切済み

VBAで行を分割し、隣の列にコピペしていく方法

moon00の回答

  • moon00
  • ベストアンサー率44% (315/712)
回答No.7

すみません、検証不足でした。 以下のコードで修正します。 Sub bunkatsu() Dim n As Long Dim msg As String Dim i, j, k As Long msg = "N値を半角で入力してください。" n = InputBox(msg) i = 0 k = 0 Do While Cells(n + 1, 1) <> "" Range(Cells(n + 1, 1), Cells(2 * n, 3)).Copy Destination:=Range(Cells(1, 4 + i), Cells(n, 6 + k)) Range(Cells(n + 1, 1), Cells(2 * n, 3)).Delete Shift:=xlShiftUp i = i + 3 k = k + 4 Loop Range("A1").Select End Sub ただ、エラーメッセージから見ると、コピーしようとしている場所にはなんらかの値があるようです。 (スペースかもしれませんが) そうなると、アラートを無視するようにした方がいいのでしょうか・・・

anti-aliase
質問者

お礼

何度もご丁寧にありがとうございました。海外出張のためお礼の入力が出来ず、遅くなりまして申し訳ありません。 作成頂いたマクロを実行してみたところ、無事目当ての形式のデータが得られました。本当に助かりました。ありがとうございます。 本来ベストアンサーに選ぶべきところ、出張中にgoo側が回答を締め切ってしまったようで、選ぶ事が出来なくなっていました。 自動で締め切る事を知らなかった私の不手際です。お詫び申し上げます。恐縮ながら今後とも、よろしくお願い申し上げます。

関連するQ&A

  • エクセル 文字列を分割するマクロについて

    1行目から200行目くらいまで、A列に次のようなデータが入っています。 (A1セル) A 1 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S このデータを下記のようにカンマごとに別のセルに分割するマクロを 教えていただけないでしょうか。 A1に「A」を、S1に「S」を入れたいと思っています。  A B C ・・・ R S 1 A B C ・・・ R S

  • Excel VBA B列を検索して1行下をコピぺ

    はじめまして。 VBAを始めたばかりですが、自分ではどうにもならないので、教えていただければと思い、初めて質問致します。 A1~G1、1行目から1000行目まで各セルに数字がランダムに1つずつ入っているデーターSheet1があり、コマンドボタンを押すことによってMsgBoxに入力した数字をB列を下に検索していき、例えば、数字の8が入力されたら、B1から下にB列に8が出現したらそのセルの1つ下の行(A列~G列まで)をコピーしてSheet2に抽出したいと考えているのですが、なかなか出来ず、困っています。 イメージとして A B C D E F G H I 1 5 14 30 25 30 3 9 2 22 34 6 7 29 49 3 3 1 8 20 4 10 6 45 4 30 15 34 50 2 5 9 5 11 8 45 7 6 20 1 6 40 8 48 25 36 4 10 7 21 22 30 28 6 7 36 8 2 3 50 2 1 43 6 と、データがSheet1に仮にあって、8が入力されたなら4行目の 30 15 34 50 2 5 9 と 6行目 40 8 48 25 36 4 10、7行目 21 22 30 28 6 7 36という様に抽出されてSheet2に 上から順に貼り付けられる様にしたいので、皆様の御知恵をお貸しいただければと 思っております。かなり複雑かとは思いますが、どうか宜しくお願いいたします。 FINDやOFFSET、IF文、ループ等を使ってみましたが私のレベルでは全く話になりませんでした。 まだVBAかけだしなもので、なるべ簡単なくプログラムでお願いいたします。

  • 行・列の整理! perl

    perlでデータを並び替えて整理したいです。 【元データ】 A a b A c d A e f A g h B i j B k l B m n C o p C q r C s t C u v ・ ・ ・ 上記のデータを下記のように並び替えしたいのですが上手くできずに困っています。 どのような記述をすれば良いのでしょうか。間の空白はタブ区切りです。 【目標】 A a b c d e f g h B i j k l m n C o p q r s t u v D ・ 現在、元データから A B C D ・ ・ というデータを作り、元データと比較していますが上手くいきません。 for($i=0; $i<@key; $i++){ print OUT "$key[$i]"; for($j=0; $j<@data; $j++){ if($key[$i] =~ /$data[$j]/){    #部分一致 print OUT "$'"; } } print OUT "\n"; } 部分一致の行を正規表現を用いて上手く処理したいのですがやり方がわからず躓いています。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • VBA 連続行データを5行ずつ隣の列に貼り付ける

    初めて質問します。VBA初心者です。 B列に連続した1ヶ月分のデータがあり、1日の項目は5項目あります。 このデータを1日分毎に、C列以降に貼り付けるマクロを教えてください。 A列には、日付が5行おきに入っています。 このような感じです。 実行前 ↓↓↓     A列  B列  C列  D列 ・・・ 1行  1/1  10 2        20       3        30 4        40 5        50 6    1/2  11 7        22  8        33  9        44  10       55  11   1/3 12 ・ ・ ・ 実行後 ↓↓↓     A列  B列  C列  D列 ・・・ 1行  1/1  10    11   12 2        20    22    ・       3        30    33    ・     4        40    44    ・    5         50    55    ・    よろしくお願いいたします。

  • VBAでグループごとソートする方法がわかりません。

    下記のようなソートをVBAで行いたいのですがわかりません。 3行2列ずつ入れ替え、その結果を別シートに作成したいのです。 A    B    C    D    E    F    G    H    I    J    K    L 5    佐藤  6    鈴木 3    高橋  8    磐田 5   中根  5    後藤 da8       da4       da6       da1       da1      da5  ↓(2行目の数を基準に3行2列ごと入れ替え) E    F    A    B    I    J    K    L    C    D    G    H 3    高橋  5    佐藤 5   中根  5    後藤  6    鈴木  8    磐田 da6       da8       da1      da5        da4      da1  ↓(最初の条件を満たしたまま、3行目のdaに続く数を基準に3行2列ごと入れ替え) E    F    I    J    K    L    A    B    C    D    G    H 3    高橋  5    中根 5   後藤  5    佐藤  6    鈴木  8    磐田 da6       da1       da5      da8        da4      da1 最近VBAを勉強し始め、「かんたんプログラミング EXCEL VBA」という書籍を読んだ知識レベルのため、なかなか苦戦しております。お時間ありましたら、考え方のヒントもしくは教えていただけないでしょうか? 以下を貼り付けてカット&ペーストしていただいたらデータを作成しやすいです。 ABCDEFGHIJKL 5佐藤6鈴木3高橋8磐田5中根5後藤 da8da4da6da1da1da5

  • 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 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

  • エクセルの列から行へコピーするBVA教えて下さい

    エクセルのVBA(マクロ)について、素人なので教えてください。 下記のようなデータ変換を行がある限り変換するVBAマクロです 列1列2列3列4列5列6列7列8 社員1 A B C D E F G H 社員2 H I J K 社員3 L M 社員4 O P Q R ↓   列1列2 社員1 A B 社員1 C D 社員1 E F 社員1 G H 社員2 H I 社員2 I J 社員3 L M 社員4 O P 社員4 Q R 違うエクセルシートへ行がある限り、コピーを繰り返す。 BVAの解説付きだと助かります

  • VBA_取消線のある行を検索、その行に操作を加える

    取消線のある行を検索して、その行に操作を加えるといったVBAを組みたいです。 ①表のB列の最終行を取得する ②B列の13行目から最終行まで④⑤の処理を繰り返す ③取消線のある行を検索する。(行No.を取得?) ④例えば13列目が取消線該当なら   その行に入力されている内容をコピー&枠外にペースト(P)  B13,C13,G13,I13,J13,K13,L13,M13,N13をコピーする。  R13にペースト(P) ⑤コピー元のセルを空欄にする_B13,C13,G13,I13,J13,K13,L13,M13,N13 といった流れにしたいのですが、③~が分かりません。 ③の"取消線がある行を取得"というよりは、 取消線がなければスルー、取消線があれば④⑤の処理をする流れの方が良いでしょうか。

  • VBA 指定先へのコピペと新規保存

    いつも参考にさせて頂いています。 今回もどなたかのお知恵が借りれる事を祈っております。 Aというファイルに入力されているデータのレイアウトは1行に1案件となっており、 列AからB、C、・・・と報告に必要な項目が並んでいます。 これを各行(=各案件)ごとに専用のファイル(Bファイル)に転写、別名で保存しています。因みにBファイルはAのファイルとはレイアウトが全く異なり、単純に行全体のコピペ~保存という訳にはいかなくて困っています。 ■Aファイルのレイアウト 1 A   B   C   D   E   F   G   H   I   L  M 2 No 受付 日付  担当 起票日 起票者 所属  区分  内容 回答日 回答者   3 1 1111 5/21 MKG 5/31 FSS 1-1 VDA gaga 6/3 GHQ 4 2 1321 5/22 FSB 6/11 CTU 3-1 NCA HAH 6/20 GHQ データはB列からO列まで入力されていますが、JとKの情報はコピー不要です。 また行数(=案件数)は一定ではなく、何行目までデータが入っているか決まっていません。 ■Bファイルへのペースト先(指定したセルにデータが入っている場合は上書き) AファイルのB列のデータ・・・J5 AファイルのC列のデータ・・・H2 AファイルのD列のデータ・・・D3 AファイルのE列のデータ・・・D7 AファイルのF列のデータ・・・F7 AファイルのG列のデータ・・・I7 AファイルのH列のデータ・・・D8 AファイルのI列のデータ・・・C10 AファイルのL列のデータ・・・D19 AファイルのM列のデータ・・・F19 AファイルのN列のデータ・・・C22 ■コピペ後の処理(コピペしたBファイルの別名保存) BファイルのJ5に貼付けたデータをそのままファイル名としてローカルのデスクトップに保存します。 以上です。 お知恵を貸して下さい!

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3