• ベストアンサー

Excel で行を指定回数だけコピーしたい

Excel で行を指定回数だけ、コピーしたいと思います。 A    B   C   D    E ssjj kkkk ssss jajj 2 jkjk jjkj jahj kjkj 4 ksks ssss kakk uhuh 0 kaka sakk kjkj iuiiu 1 このような表があった時、E列で繰り返しの回数を指定するとして 次のシートに以下のような表ができれば いいのですが。 A     B     C     D     E ssjj kkkk ssss jajj 2 ssjj kkkk ssss jajj 2 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 kaka sakk kjkj iuiiu 1 膨大な数のデータですのでVBAやマクロ が使えるといいのですが。 よろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>VBAやマクロが使えるといいのですが。 VBAでやれば簡単なロジックで出来るが、VBAの経験はあるのかな。 (A)E列に繰り返し数があると仮定している。 (B)2003までなら、データ数は65536行以内と仮定になる。 (E列の繰り返し数の合計が) 標準モジュールに Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") d = sh1.Range("A65536").End(xlUp).Row MsgBox d k = 1 For i = 1 To d For j = 1 To sh1.Cells(i, "E") sh1.Range(sh1.Cells(i, "A"), sh1.Cells(i, "E")).Copy _ sh2.Cells(k, "A") k = k + 1 Next j Next i End Sub ーー 質問例でのテスト  Sheet2に ssjj  kkkk   ssss    jajj    2 ssjj  kkkk   ssss    jajj    2 jkjk  jjkj   jahj    kjkj   4 jkjk  jjkj   jahj    kjkj   4 jkjk  jjkj   jahj    kjkj   4 jkjk  jjkj   jahj    kjkj   4 kaka  sakk   kjkj    iuiiu   1

kansha40-1
質問者

お礼

お世話になります。 さきほど、御礼メールを出したつもりなのですが、ポップアップブロッカーの影響なのか、発信していなかったようなので、もう一度、御礼させていただきます。 重複していましたら、お許しください。 教えていただいた方法で無事に問題を解決し、作業を終了することができました。 ほんとうに、ありがとうございました。 VBAはおっしゃられましたように、確かに、経験もほとんどありません。 でも、最近、取り組んでいる仕事で、どうしてもこうした作業が必要になってきましたので、本と首っ引きで取り組んでいます。でも、どうしても、実作業の需要には追いつかないのが現状です。この問題だけで、昨日、半日以上を費やしてしまいました。ほんとうにありがとうございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

E列の最終入力行から順に上にコピーしてゆきます。 もとの行より行数が増加するので、シートから溢れる可能性がありますが、そのチェックはしていません。 アクティブなシートに対して処理が行われます。 Sub test() Dim st As Worksheet, rng As Range Dim r As Long, r1 As Long, cnt As Long Set st = ActiveSheet For r = st.Cells(st.Rows.Count, 5).End(xlUp).Row To 1 Step -1  If IsNumeric(st.Cells(r, 5).Value) Then    r1 = st.Cells(r, 5).Value    Set rng = st.Cells(r, 1).Resize(1, 5)    For cnt = 2 To r1     st.Cells(r + 1, 1).EntireRow.Insert     rng.Copy Destination:=rng.Offset(1, 0)    Next cnt  End If Next r End Sub

kansha40-1
質問者

お礼

ありがとうございました。 問題点として、E列が"0"のところが残ってしまいました (E列"0"のところは行を削除したかったのですが) が、E列 が "0" の行だけ削除するという方法で、無事に、作業を進めることができました。 ちょっと問題点はありましたが、勉強になるcode だと思いました。 これからもよろしくお願いいたします。

関連するQ&A

  • エクセル行の挿入

    excelに行を追加する方法を教えてください! Bにある数からマイナス1行下に挿入したいのです。 1→挿入なし  2→下に1行挿入  3→下に2行挿入 数よりマイナス1行の挿入をしたいのですが、 マクロ、関数など全く分かりません。 以前の質問も見てみたのですが、見当たらないのと、 マクロ?が全くわからないので、 どなたか一から教えていただけないでしょうか? 本当に申し訳ないのですが、お願いします。 Aにkkkk Bに数が入ります。   A | B | C | D ------------------------------------- 1| kkkk   2 ------------------------------------- 2| kkkk   1 ------------------------------------- 3| kkikk   3 ------------------------------------- 4| kkkk   2 ↓行の挿入   A | B | C | D ------------------------------------- 1| kkkk   2 ------------------------------------- 2| kkkk   空白(行の挿入) ------------------------------------- 3| kkikk   1 ------------------------------------- 4| kkkk   3 ------------------------------------- 5| kkkk   空白(行の挿入) ------------------------------------- 6| kkkk   空白(行の挿入) ------------------------------------- 7| kkkk   2 ------------------------------------- 8| kkkk   空白(行の挿入) -------------------------------------

  • Excel 指定値だけ行コピー+値の移動

    Excel 2010でSheet1に次のような表があります。  A列  B列 C列 D列 E列  りんご 111  222 333 444  みかん 555  666  いちご 777  888 999   ・   ・   ・ これをマクロを使って、次のような形にしたいと思います。 1.C列以降の「数値が入った列数分だけ」行コピーをする。(最大9列まで)  (この例の場合りんごの行は3回、みかんの行は1回、いちごの行は2回) 2.次にC列以降の数値はコピーした行のB列に移動する。 マクロ実行後は次のようになります。  A列  B列  りんご 111  りんご 222  りんご 333  りんご 444  みかん 555  みかん 666  いちご 777  いちご 888  いちご 999   ・   ・   ・ 膨大な数のデータですので、マクロを使って処理したいと思っています。 どうぞよろしくお願いいたします。

  • 通話回数の計算についての質問です

    下の表はある月のA~Dの4人の間の通話回数の一部を示したものである。BとDの通話回数は何回か?       A B C D 計 A       20 30 20 70 B 20 60 C 30 65 D 20 45 計 70 60 65 45 という表から BとCの通話回数=a BとDの通話回数=b CとBの通話回数=c CとDの通話回数=d DとBの通話回数=e DとCの通話回数=f として a+b=40 c+d=35 e+f=25 c+e=40 a+f=35 b+d=25 というところまではわかったのですがここからどうやってBとDの間の通話回数を計算するのかわからず困っております。 ぜひご回答のほうよろしくお願いいたします。

  • エクセル関数(複雑な) { }←このカッコについて

    {=SUM(IF(Sheet1!$B$2:$B$500="F",IF(Sheet1!$C$2:$C$500="kkkk",IF(Sheet1!$A$2:$A$500=5502,Sheet1!$E$2:$E$500,0),0),0))} 上記のような数式があり次のような→{ }カッコがついていますが 数式に少しでもカーソルを置くと式が壊れてしまいます。{ }←このカッコが消えてしまいます。コピーも出来ない状態です。 この式を使いKKKKの部分をSSSSに書き変えたりしてベースを作りたいのですがどうしたらこのカッコが壊れないように書き換えられますか? ※この数式私が作ったものではないのです。  難しくて構造がよくわからないのでどなた分かる方が  おりましたら教えてください。

  • ◆エクセルで行単位で重複検索したい!!!◆

    お世話になります。 エクセル(2003です)表で A B C D E E・・・・・・・・ 1 1 1 1 1 2 1←重 1 1 1 3 1 1 1 1 1 1 1 1 2 1←重 1 1 1 1 1 2 1←重 1 1 4 1 1 6 1 上記のようにA~E・・・に入力されているデータで全く同じものに印を付ける方法を教えて下さい(行単位で検索) VBAやマクロは苦手です。関数で出来ますか?条件付書式でやってみたのですがうまく出来ませんでした。 よろしくお願いします。

  • Excelで条件つき行削除について

    下記のようなExcelの表があるとします。    A    B     C     D     E 1      会社A   会社B   会社C    会社D 2 仕事A 23 45 67 27 3 仕事B 45 24 65 33 4 小計 68 69 132 60 この状態のときはいいのですが、    A    B     C     D     E 1      会社A   会社B   会社C    会社D 2 仕事A 0 0 0 0 3 仕事B 0 0 0 0 4 小計 0 0 0 0 上記のようにB4、C4、D4、E4がそれぞれ「0」のときに4行目を削除または行の高さを「0」にするマクロを組みたいです。 わかる方がいましたらよろしくお願いします。

  • エクセルまたはVBAで重複行を削除

    例えば、 A B 1 1 a 2 2 b 3 3 c 4 4 d 5 4 d 6 5 e 7 6 g 8 6 g といった表があるとします。 A列をキーに、昇順にされた一覧表です。 ここで番号が重複している行、この例では4行目と5行目、7行目と8行目がそうです。 こういった重複した行を検索して、行削除したいのですがどんな方法が可能でしょうか? 最終的にはVBAでのイベントになるでしょうが、それ以前にエクセルで前準備などしておくようなことは必要でしょうか? 表自体はかなり膨大な量のデータベースです。 よろしくお願いします。

  • Excel VBAにてデータのある列の指定とブック間コピーについて

    初めまして。Excel VBA初心者です。よろしくお願いします。 以下の表の状態で、たとえば、B列の2行目からデータが使用されている行(以下の例では40行目ですが、ブックの内容により行数が変化します)まで、別のブックにコピーする方法があれば教えて頂きたいです。 すみませんが、よろしくお願いいたします。 A B C D E ------------------------------- 1 あ い う え お 2 い う え お か     ・     ・ ・ 40 a b c d e

  • 行を超えて範囲指定したい。

    エクセル2000でA1:G1とするとA1-A6,B1-B6,C1-C6,D1-D6,E1-E6,F1-F6,G1-G6が範囲指定できます。 行を超えて A1-A6,D1-D6,G1-G6,J1-J6というように3行おきに範囲指定する方法を教えてください。

  • ExcelのVBAで選択範囲を指定する方法

    初心者でVBAに挑戦したらいきなり壁にぶち当たりました。。 誰か教えて下さい! 私のしたいことは、、 +-+-----+---+ |No|Name|状況| +-+-----+---+ |11|RARA| ○ | +-+-----+---+ |12|RURU| ○ | +-+-----+---+ |13|KAKA| △ | +-+-----+---+ |14|RERE| △ | +-+-----+---+ |15|RERA| × | +-+-----+---+ |16|KOKO| × | +-+-----+---+ 上記のような表があって、マクロを実行したら状況が○になっている行のNo・nameのセルが選択されるようにしたいんです。 ○のある行の多さは状況によって変わるので、”○”だったら選択というように指定したいと思っています。 一度「マクロの作成」機能でマクロを作ってみたんですが、 Range("A2:B3").Select のようになりました。 どうやったら○だったら、という条件が付けれますか? よろしくお願いします。

専門家に質問してみよう