• 締切済み

マクロ データ加工 番号に合わせて行を挿入し移動

添付の左の状態から右の状態に加工するマクロが知りたいです。 A列:A7から1~18まで番号、空白1行、1~18まで番号、空白1行…繰り返し 左のB列:B1のみ見出し、B2からタイトル、1~いずれかのの番号(9だったり16だったりいろいろ)、タイトル、1~いずれかのの番号、タイトル…繰り返し 左のC列とD列:B列の番号に該当する氏名と生年月日 右の状態にするには最初の1~4行を下げる、赤の番号と黒の番号を合致するように移動し、黒の番号がないときはその行を18まで空白行にする、タイトル、番号を合わせて移動…という繰り返しになります。(黄色の部分を空白行にして調整) この手順でなくても結果が同じになれば良いです。 黒の番号は通常は連番ですが、まれに途中の番号がぬけている(例1、2、3、6、7)場合がありますが、その際には抜けている行(例4、5)を空白行にしてもらえると助かります。

みんなの回答

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.7

失敗する、元データが 無いと 検証、しようが ない、ので 何処の、WEBか 教えて、頂けますか?

honeybeans
質問者

補足

WEBデータをあるソフトを使って取り込んだものですので、Webのものとはまた違っています。1つ目の18個はできるのに、2つ目以降ができないというのは何か思い当りませんか?

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

一応 情報使用許諾に、ついての 補足を、お願いします 因みに コピー元.Copy コピー先 と、して セルを、コピー するだけ です

honeybeans
質問者

補足

こちらのデータはWebに公開されている情報を取り込んでいます。それが毎日のようにこの処理をして仕事をしていますので、コピーの件についても、マクロに取り込んですべて一度にやってしまいたいわけです。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.5

あぁ、其れと 今回は 大量の、個人情報を 取り扱いに、なられる と、思いますが 其の、名簿中の 全員から 情報、使用許諾は 頂かれて、いますか? 此処、最重要点です!!

honeybeans
質問者

補足

やっぱり、ダメですね。生年月日の形式を変えても、1つ目の18まではうまくいきますが、2つめからはやっぱり詰まって入力されてしまいます。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.4

判りました 失礼しました、済みません 開始位置は  With ActiveSheet  Let Point1 = 2  Let Point3 = 16 と、ある 此処の、point3の 初期値を 16から、7に、 変える、だけ なので 簡単に、変えれますし、 見出しの、写しも コピー、するだけ なので 簡単ですし、 何なら 赤字の、写しも 簡単ですから、 此等は、楽ですが 実際のデータでは動かない と、なると 何等かの 形質的な、違いが データ側に、あるもの と、思います 実データは、流石に 明かせなくて、当然 で、しょうが 同様に 思わしく、行かない ダミーデータを お作り頂き また、新たに 示して、頂けないで しょうか? 今回の、データでは 上手く、行く 以上 デバッグの、難易度が 上がって、しまいます ので まだ お求め、頂ける なら 是非とも、お願いします

honeybeans
質問者

お礼

試しに元のデータを1999年1月1日という形式に変えたら、できました。でも元のデータをいちいち毎回変えるのは面倒です。数字8桁に対応するようにしたいです。あと、見出しのコピーはどうなりますか? すみませんが、よろしくお願いいたします。

honeybeans
質問者

補足

テストファイルと実際のファイルが違うところは特にないです。氏名は生年月日は19990101と8桁で入力しています。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

マクロ付き、テストファイルも 良かったら、どうぞ https://1drv.ms/x/s!AjviygfJDgV_1QZhdZtSEMHyOBTJ

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

勘を、頼りに 作って、みました。 色つけは、してませんが 条件書式で、十分かな? と、ね かなり、汚いですが 取りあえずは、動く と、思います。 あぁ! そうそう 赤字カウントは 動かして、いません 元々、ある 前提です 変えるのは、簡単です。 Option Explicit Option Base 0 Sub main() Dim カウント2 As Long, カウント1 As Long, Point1 As Long, Point2 As Long, Point3 As Long, 行数 As Long, エンド行 As Long  With ActiveSheet  Let Point1 = 2  Let Point3 = 16  Let エンド行 = .Cells(2, 2).End(xlDown).Row  Do   Let Point2 = .Cells(Point1 + 1, 3).End(xlDown).Row   Let 行数 = Point2 - Point1   .Range(.Cells(Point1, 2), .Cells(Point2, 4)).Copy .Cells(Point3, 9).Resize(Point2 - Point1 + 1, 3)   If .Cells(Point3, 9).Offset(Point2 - Point1, 0).Value > 行数 _   Then   For カウント1 = 1 To .Cells(Point3, 9).Offset(Point2 - Point1, 0).Value    If カウント1 <> Cells(Point3, 9).Offset(カウント1, 0).Value _    Then    For カウント2 = カウント1 To .Cells(Point3, 9).Offset(カウント1, 0).Value - 1     Call 項分離(.Range(.Cells(Point3 + カウント2, 9), .Cells(Point3 + カウント2, 12)))    Next カウント2    End If   Next カウント1   End If   Let Point1 = Point2 + 1   Let Point3 = Point3 + 19  Loop Until エンド行 < Point1  End With End Sub Sub 項分離(ByRef レンジ As Range)  レンジ.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End Sub

honeybeans
質問者

お礼

すみません、テストファイルでは確かにできているのですが、実際のデータを入れてやってみると、最初の上の方は下がっているのですが、番号が合致しない行が白紙行とならずに詰まってタイトルが始まっています。

honeybeans
質問者

補足

B1の「見出し」も移動してほしいです。あと、赤の番号はA7から始まります。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.1

〉黒の番号がないときはその行を18まで空白行にする、 〉黒の(中略)番号がぬけている(中略)際には(中略)行(中略)を空白行に 無い、跳ぶ、抜ける、 は、 存在が、ない と、いう意味で 同じ、事 故に、 処理上、同じ です どちらで、しょう? どちらで、処理 するの、ですか?

関連するQ&A

  • マクロ データ加工 番号に合わせて行を挿入し移動

    添付の左の状態から右の状態に加工するマクロが知りたいです。 A列:A7から1~18まで番号、空白1行、1~18まで番号、空白1行…繰り返し 左のB列:B1のみ見出し、B2からタイトル、1~いずれかのの番号(9だったり16だったりいろいろ)、タイトル、1~いずれかのの番号、タイトル…繰り返し 左のC列とD列:B列の番号に該当する氏名(漢字)と生年月日(数字8桁) 右の状態にするには最初の1~4行を下げる、赤の番号と黒の番号を合致するように移動し、黒の番号がないときはその行を18まで空白行にする、タイトル、番号を合わせて移動…という繰り返しになります。(黄色の部分を空白行にして調整するかんじです。黄色の塗りは必要ありません。)この手順でなくても結果が同じになれば良いです。 黒の番号は通常は連番ですが、まれに途中の番号がぬけている(例1、2、3、6、7)場合がありますが、その際には抜けている行(例4、5)を空白行にしてもらえると助かります。

  • 行を挿入するマクロ

    画像の右の表を左の表のように自動で整えたいです。 A、b、c…グループがあって、それぞれ連番があります。 1から18行したら次のグループの連番を1から開始となるように、詰まっている部分に空白行を挿入したいです。グループごとの番号は画像のように11で終わるとは限らず、1~18のうちのいずれかの数です。

  • 行挿入マクロをご教示ください

    A列の5行目から1000行ほどK列までデータが入っています。 A列からK列をB列優先でソートを行うと、B列にところどころ同じ番号が2行あったり、3行あったり、また4行とバラバラで、出てきます。 この場合、同じ番号が2行以上あるセルの上に空白の行1行を挿入し、同じ番号行分を合計して整理したいと考えています。 2行以上ある行の上に空白行を1行挿入するようなマクロをご教示ください。 どなたか、よろしくお願いします。

  • エクセルのマクロ(行を挿入し連番を振る)

    ボタンを押すと以下のことを実行するマクロを作成することはできますか? A列2行目から 書類a 書類b 書類c 書類d 書類e C列2行目から 5 3 2 4 3 と入っています。C列は各書類の枚数です。 ボタンを押すと書類aと書類bの間に4行空白行が挿入され、A列とC列は増やした4行にそれぞれ書類a、5がコピーされ、B列には2列目から6列目まで1.2.3.4.5と連番が振られる。 というマクロです。 B列C列で1/5 2/5 3/5 4/5 5/5 であるという表現がしたいのです。(/は入りません) 書類が1枚の場合はB列C列共に空白で1/1とは入りません。 C列に入る書類の枚数により行が挿入されその書類の枚数分の連番が振られるようなマクロが作りたいです。 毎日何百行も手作業で挿入しコピーし連番を振る作業をしています。 決まった行数を増やすとか上の行をコピーするマクロならわかるのですが、C列の値を見て挿入する行数を判断するようなマクロができるのかわかりません。 どなたか教えて頂けないでしょうか。

  • excelのマクロで条件による行の挿入

    列AとBがあり列Aに学校のクラス名A組、B組、C組・・・(20クラスほど)と氏名が 入るエクセルシートがあるのですが 先頭行はA組から始まり5行区切りで数え、(A組も5行のうちに入る) その5行内に次のB組が入らないように空白行を挿入したいです もし、5行以内にB組がない場合、次の5行でまたB組があるか判定しなければ氏名5つ あれば空白をいれてというのを20クラスぶん作るマクロは可能でしょうか? VBAの知識がさっぱりないので途方にくれています。 元のデータの例   マクロ実行後 列A   列B      列A   列B A組           A組   氏名1 111      氏名1 111  氏名2 222      氏名2 222 B組           空白行挿入 氏名3 333      空白行挿入 氏名4 444      B組 氏名5 555      氏名3 333 氏名6 666      氏名4 444 氏名7 777      氏名5 555 C組 氏名6 666              氏名7 777              空白行挿入              空白行挿入              空白行挿入              空白行挿入              C組  

  • エクセル 行挿入のマクロについて

    こんばんは、エクセルのマクロについてお伺いします。 現在 A1:支店名 B1:連番 C1:在庫数 全部で1000行位入力があります。 ・A列には支店名 ・B列には連番は1・2・3~と1000件位 ・c列には在個数にはそれぞれ1桁から2桁の数字 【質問】 在庫数の数だけその連番の行を増やしたい。 例えば、 A2:東京支店 B2連番:1 C2在庫数:3 だとすると2行目のあとに2行挿入し在庫数が3なので下記のように3行にしたい。 A2 東京支店 B2連番 1 C2 在庫数 1 A3 東京支店 B3連番 1 C3 在庫数 空欄 A4 東京支店 B4連番 1 C4 在庫数 空欄 何せ数が多いのでマクロをお教え頂ければ助かります。 ※その際、支店名と連番は同じ物がはいるとありがたいです。 ※在庫数は空欄で構いません。 マクロでなくても方法があればお教え下さい。 よろしくお願い致します。

  • セル移動マクロを教えて下さい。

    エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。

  • エクセル:データが入った最終行の行番号の取得

    お世話になります。 A列にいろいろデータが入っているとして、データが入っている一番下(最終行)の行番号をB1のセルに表示させるにはどういう計算式で出来るでしょうか? A列のデータは数値だけでなく文字列も含みます。また途中空白セルもあります。 A1~A20にデータが入っているときはB1に20と表示させる。 よろしくお願いします。

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

  • エクセルのデータ加工

    エクセルのセルで、縦に1行目名前A、2行目住所A、3行目電話番号A、4行目名前B、5行目住所B、6行目電話番号B・・・、という具合に並んでいるデータを横に1列目1行目名前A、1列目2行目名前B、2列目の1行目住所A、2列目の2行目住所B、3列目の1行目電話番号A、3列目の2行目電話番号B、という風に加工したいのですが、一つ一つセルを移動するのではなく、なにか良い方法はありませんでしょうか?ちなみにデータは1000件ほどあるのですが。

専門家に質問してみよう