• ベストアンサー

エクセル:一つ上のデータを下にコピーするマクロ

例えば下のようにデータが記入されています。しかし所々データが消えてしまいました。 一律一つ上のデータを下にコピーするマクロを教えていただけないでしょうか。 全データ数は固定ではありません。一番下までという考えでお願いします。 所々二つ以上消えている部分もあります。 ABC001 ABC001 ABC001 ABC001 ABC001 ABC002 ABC002 ABC002 ABC002 ABC002

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

データはA1セルから始まるとしています。 Sub Test()   Dim c As Range   Dim strData As String   For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp))     If c.Value = "" Then       c.Value = strData     Else       strData = c.Value     End If   Next End Sub

ticktak
質問者

お礼

完璧です!仕事が100倍速く終えることが出来ました。いや1,000倍かな。 大変ありがとうございました。

その他の回答 (4)

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

済みません が、 早速修正させてください 空値が入ったセルを見つけて その後、値を書き込んだ後の 着目点の異動先設定時の .Offset~を、外しました 同じことは Next…で、行われます ので 此のままでは 2つも下に進み 見ない行が1行でます 変更後の物を先のURL http://1drv.ms/18Lhzw1 に、反映させました また、 変更要請をお知らせ頂く為に https://onedrive.live.com/redir?resid=7F050EC907CAE23B!566&authkey=!AJe_efJJPx5Dt7s&ithint=file%2ctxt を、用意しました 其れと もっと短い 斬新なものを 検討中です ので 閉鎖されていなかったら アップする かも、知れません

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

此、エクセルが手元に無いので デバッグにかけれていないのですが 如何でしょうか? 呼び出し時の引数は 補完したい列の データ見出しセル辺りを渡してください 何件変更したか を、返してきます ので 表示するなり イミテッドウインドウに出力させるなり その他活用するなり してください 以下、Code Option Explicit ' Function 列補完(開始位置 As range) Az Long Dim 検査値    Az variant, _    着目点    As range, _    変換回数   As Long, _    レンゲ    As range _ '  Set 開始位置 = 開始位置.cells(1,1)  if 開始位置.value = "" _   Then Set 開始位置 = 開始位置.End(xlUp).Offset(1,0)  End If '  変更回数 = 0  検査値  = 開始位置.value '  With ThisWorkbook.ActiveSheet   set レンゲ = _    .range( _     cells( _      開始位置.Row + 1, _      開始位置.column _     ) , _     cells( _      Rows.Count, _      開始位置.column _     ). _     .End( _      xlUp     )    ) '   For 着目点 Each レンゲ    If Not 検査値 = 着目点.value _     Then  _      検査値 = 着目点.value      If 検査値 = ”” _       Then _        レンゲ. _         Range( _          cells( _           着目点.row , _           着目点.column          ) , _          cells( _           着目点.End(xlDown).row , _           着目点.End(xlDown).column _          ) _         ). _         value = 検査値        Set 着目点 = 着目点.End(xlDown).Offset(1,0)        検査値    = 着目点.value        変更回数   = 変更回数 + 1      End If    End If   Next 着目点 '   Set  _    .range( _     cells( _      開始位置.Row +1, _      開始位置.column _     ) , _     cells( _      Rows.Count, _      開始位置.column _     ). _     End( _      xlUp _     ) _    ) = _    レンゲ '  End With  列補完 = 変更回数 End Sub 尚、 バグレポートや変更要望を頂けましたなら http://1drv.ms/18Lhzw1 にて、 できるものは 場合により、お応えさせて頂きます

参考URL:
http://1drv.ms/18Lhzw1
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.3

#1です。 この処理はSelelctionで処理していることからわかるように、 「セルのある場所」から逐次「一つ下」を確認して行きます。 なので、処理の前にCells(1,1).select とかで、調べる先頭の セルの場所にカーソルを飛ばしてやればいいです。 ちなみに、先ほどのコードは動作のチェックをしていません。 たぶん動きますが、動かなかったら適宜バグつぶしをお願いします。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

一番下、をどういう風に判定するか(次が抜けているだけなのか、 本当に最後なのか、そのセルを見ただけではわからない)という 問題がありますが、要は Selection.offset(-1).Copy Selection こいつを、「中身が無い」場合だけ処理すればいい、ってことです。 とりあえず、別途「総件数」が分かってるとして。 For I = 1 TO 総件数 If Selection = "" then Selection.offset(-1).Copy Selection Selection.offset(1).Select Next という感じではないかと。

ticktak
質問者

補足

早速ありがとうございます。やってみたいのですが、この場合列はどう指定したらいいのでしょうか。無知ですみません。

関連するQ&A

  • エクセル マクロで可能!?

    エクセルで個人データを管理しています。マクロでできるのかわかりませんが、できるなら挑戦してみようと思い質問しました。 データは、縦に個人別に並べてあります。また1人のデータにつき4行を使って横長にその個人のデータを記入しています。よって左端に名前等の基本データが記入されていています。下のような感じです。 (シート1)  名前A データ ××○○○・・・・・・  名前B データ ×○○×○・・・・・・  名前C データ ○○××○・・・・・・   ・   ・ そこで、ある個人のデータの名前周辺部分を別シートにそのまま同じ形式でコピーをしたいのですが、それをマクロでできないのかなと思い質問しました。下のように全ての人をコピーする必要がないので解らなくなっています。 (シート2)  名前A   名前C  名前G   ・   ・ 考えているのはシート1の各名前の前にコマンドボタンを配置し、それに『指定部分をコピーしてシート2に貼り付け』というマクロを組めばいいのでないかと思っています。しかし、全ての個人をコピーする必要がないため、コピー先の場所をどう指定してやればいいのかがわかりません。コピーをした順番に上から順番に埋まってほしいのです。 以上、どなたかわかる方お願いします。 エクセルを文章で状況説明するのは難しいです…

  • Excelで上のデータをコピー

    縦セルに何個かおきにデータが入っていて、空白のセルは直上の データと同じデータです。 数が膨大なのと空白の数が一定ではない為、空白部分のデータを 一括でコピーする方法を教えてください。 別のセルに関数を入れる方法でも構いません。 宜しくお願いします。

  • エクセルマクロでセルの値を下へコピーするには

    ご教授下さい。 毎日送られてくる項目数の多い表を、必要な項目のみ取り出して表を整理するマクロを組んで使っています。しかし、日によって行数が違う為、ある列に数式を入力して下へコピーする場合、マクロ操作が終わってからオートフィルを使って下へコピーしています。行数が違っても行数分だけ下へコピーできるマクロを教えて下さい。何卒よろしくお願い致します。      A列   B列   C列   D列     E列 1行    豆   10入   2個   100円   (数式CXD)200円 2行   飴   20入  3個   150円   (数式CXD)450円  3行   餅   10入   4個   100円  (数式CXD)400円 4行   麦   15入   2個   200円   ↓ 5行   米   20入   4個   100円   ↓ 上記のような表でE列の数式を下へコピ-するマクロです。 日によって行数に違いがある場合でも行数分だけ 下へコピー出来るマクロを教えて下さい。

  • マクロ:他シートにデータをコピーしたい

    Excelのマクロについてです。 シート1にデータが有り、その中のB列に「済」と記入されている行のみ シート2にコピーして転記したいのです。 これだけなら簡単なのですが データ内には複数行にまたがってのセル結合がされてあったり 図形描写やテキストボックス等も混ざってあります。 それらもまとめてコピーしたいのですが、マクロで何とかなるのでしょうか?

  • コピーするExcelマクロを作りたいです(2)

    「コピー元」ブックから「コピー先」ブックにコピー&ペーストを 行うマクロを作りたいのですが、列の計算が複雑で困っています。 Excelブックのキャプチャ画像を加えて再投稿します。 画像ではシートになっていますが、画面左のシートのような表から 右のシートの当てはまるセルにデータを写すようにお考えください。 「コピー元」ブックは月に一度ダウンロードするデータで、ピボット テーブルです。一月ごとに、前月の列が各営業所ごとに増えていき ます。行には、商品ごとの売上げが入力されています。 また、各営業所ごとに、年度合計列があります。(営業所の数は10 前後、商品の行は50以上はあります。) 「コピー先」ブックは、あらかじめ年度末までの行列セル、合計列が 用意されていて、「コピー元」ブックからデータを移動してくるのみ でレポートとして毎月提出する体裁です。 単純にコピーするだけならばよいのですが、毎月各営業所一列ずつ 増えていくというのが式にして表せません・・・また、できる限り 数値の変更を最低限にして、毎年度利用できるマクロにするという 希望もあります。 ご面倒かと思いますが、お力を貸してください。

  • Excelでコピーの際

    こんにちは。 会社のデータをエクセルで作っているのですが、 コピーする際、表題の部分を常に表示する設定にしたいのです。 人員表なので、 |No,|人名|生年月日|入社日| etc... この下にズラーーーっと、社員データが記入されているので、 コピーすると何枚にもなってしまいますよね。 それを、 |No,|人名|生年月日|入社日| etc... の部分を1枚目にも2枚目にも固定して設定したいのですが どうしたらできるでしょうか? 分かりにくくてすみませんが、宜しくお願いします。

  • EXCELのマクロでデータをクリアしたい

    仕事でエクセルのマクロを使ってリストを作る作業があるのですが、行き詰まりました。どなたか助けて下さい。お願いします。 表を作るのには二つのマクロを使っています。 【一つめのマクロ】 1.定形のウェブページからテキストをコピーする    内容は商品名や商品番号や数量です 2.エクセルの一番左上に貼り付ける 3.するとマクロが働いて貼り付けたデータはseet1に保存されて自動的に新しいシートが用意される 4.新しいシートに別のデータで1.2.を繰り返す この作業は9回まで繰り返し、一旦エクセルを閉じます。 次に再びエクセルで 【二つ目のマクロ】を立ち上げ、現れた『リスト作成』ボタンを押すと自動的に完成の表が作られます。 最初はこの方法で快調だったのですが、行き詰まりました。 ・行き詰まりその1 一つめのマクロで九つまでコピーペーストするのをくり返して、二つ目のマクロを使うと今までのデータをすべて反映して表が作られてしまいます。うまく説明できないのですが、例えば 月曜にコピーペーストして表完成。 火曜に別のデータでコピーペーストして表を完成させると、必要ない月曜のデータも含めて表が出来てしまう。 これが一つめの困りです。 ・行き詰まりその2 二つ目の困りは、ある日別の社員が一つめのマクロを使ってコピーペーストしていたところ、誤って9つ以上シートを作ってしまったらしく、作りすぎたシートを削除しました。 そうしたらフリーズしたので、再起動してやり直ししたら、そのマクロのファイルを開くたびに、上記の失敗が現れてそれ以上のデータが作ることができなくなりました。(2つめのマクロを動かすと失敗データが上書きされるのみです) 快調な時は表が完成すると、一つめのマクロでは何のデータも残りませんでした。 このような稚拙な説明しか出来ないのですが、どなたかご教授下さい

  • マクロでコピー貼り付けするには・・・

    マクロでコピー貼り付けするには・・・ マクロでファイルを呼び出し、そのファイルにコピー→貼り付け(値)するにはどのようにすれば良いのでしょうか? 具体的な方法は・・・ 添付のようなエクセルがあるとします。くだもの、野菜、肉、飲み物のそれぞれの項目に対して、データがあります。ここはある表より割り出されるもので、計算式が入っています。 このような表の下にある「ファイル呼び出し」ボタンをクリックすると、別のエクセルファイルが開いて、そこに これらのデータを貼り付けるのをマクロで行いたいのです。 どのように行えば良いのでしょうか? ご教授願います。以上、よろしくお願いします。

  • エクセル:下にコピーをマクロで(条件付)

    お世話になります。 エクセルでの入力で、「下にコピー」を多用する仕事があります。 以下の例をマクロでやりたいです。 例 まずC列、D列、E列のうちデータが入っている行がもっとも大きい列を判断します。 C10、D12、E13が各列のデータが入っている最大行の場合、E13の13行目が最大になります。このようにE列が最大になる場合、C列はC10の値を13行目まで下にコピー、D列はD12の値を13行目まで下にコピーします。(Ctrl+D) (ここでいう13行目までというのは最大値E13の13を意味します。) また、C12、D15、E11が各列のデータが入っている最大行の場合、D15の15行目が最大になります。D列が最大になる場合は、C列のC12の値を15行目まで下にコピーします。(E列に対してはなにもしない) さらに、C13、D10、E11が各列のデータが入っている最大行の場合、C13の13行目が最大になります。C列が最大になる場合はなにもしない。 C列、D列、E列のうちデータが入っている行がもっとも大きい列が判断できない場合(C14、D14、E12など最大行が同じ場合)の時も何もしません。 これをマクロでやる場合、どうすればよいでしょうか?

  • Excel データ切り出しマクロについて

    Excelのマクロについてお聞きしたいと思います. たくさんあるテキストファイルの一部を切り取って貼り付けたい場合は どうしたらいいのでしょういか? マクロではない流れとしては テキストファイルを開く ↓ 全選択してコピー ↓ Excelに貼り付ける ↓ 必要な部分だけ切り取る ↓ 貼り付け データの例としては A 12.3 78.5 B 13.5 65.5 C 23.5 65.8 とあるとしたら一番右側の列のデータのみ(78.5,65.5,65.8) だけ必要とします(切り取りたい部分) どのようなマクロを組んだらいいのでしょうか? よろしくお願いいたします.. マクロ実行時にファイルを選択できる機能もつけていただけたら 嬉しいです. できましたら全コードを載せていただけたら幸いです.

専門家に質問してみよう