• ベストアンサー

エクセルのマクロ(指定列の空白にひとつ上の文字を入力し続ける)

エクセルのマクロを教えてください。 指定列の空白にひとつ上の文字を入力し続けるマクロです。 A列指定 A2からスタートし、1000行くらいあるデータ 空白があった場合ひとつ上の文字を入力 空白は、2行連続・3行連続となることもあるが大抵は1行空白 この場合、空白セルの上で一番近いデータをコピーする A列のデータは、文字・数字・日付と様々 1000行ある場合もあるが、それ以下の場合もあるので、10行空白が続いたらマクロが自動的に終了 エクセル2003使用 よろしくお願いいたします。

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

  • ベストアンサー
  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

はじめまして >空白があった場合ひとつ上の文字を入力 >空白は、2行連続・3行連続となることもあるが大抵は1行空白 >この場合、空白セルの上で一番近いデータをコピーする >A列のデータは、文字・数字・日付と様々 A3から順にセルが空白でないかを調べていき、空白だったら上のセルをコピーすればOKです。…空白が何行か続いても空白行に上の行の値をコピーしてから次の行か空白がどうかチェックする様にすればOKです サンプルプログラムは以下の通りです。 Sub sumple() For i = 3 To 1000 If Cells(i, "A") = "" Then Cells(i - 1, "A").Copy Cells(i, "A") End If Next i End Sub >1000行ある場合もあるが、それ以下の場合もあるので、10行空白が続いたらマクロが自動的に終了 上のサンプルプログラムでは1000行を終了としています。終了の条件が「10行空白」ではなく、値が入っている最後の行とするなら、 For i = 3 To 1000 を For i = 3 To [A65536].End(xlUp).Row に置き換えれば出来ます。 ただし、A65536のセルに値が入っていないことが条件です。

yasuhiko2001
質問者

お礼

お返事ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >10行空白が続いたらマクロが自動的に終了 そういう注文は不必要な気もしますが、一応入れておきました。 ひとつずつセルに入れるのではなくて、以下のようにまとめてコピーします。 Sub TestMacro() Dim a As Range On Error GoTo ErrHandler Application.ScreenUpdating = False With Range("A2", Range("A1001").End(xlUp))  For Each a In .SpecialCells(xlCellTypeBlanks).Areas   If a.Rows.Count < 10 Then    a.Offset(-1).Cells(1).Copy a   Else    Exit Sub '10行の空白は、終了   End If  Next a End With Application.ScreenUpdating = True ErrHandler: 'すでに入れられている場合は終了 End Sub

yasuhiko2001
質問者

お礼

お返事ありがとうございました。

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

サンプルプログラムの訂正です。前に書き込んだプログラムでも動作しますがこちら方が記述が少し短くなります。 Sub sumple() For i = 3 To [A65536].End(xlUp).Row If Cells(i, "A") = "" Then Cells(i - 1, "A").Copy Cells(i, "A") Next i End Sub

yasuhiko2001
質問者

お礼

お返事ありがとうございました。 シンプルな点と使い勝手が一番良かったです。

関連するQ&A

  • EXCELの文字列を指定の色に変えるには

    EXCELの例えばA列の文字データの特定の文字列を一括して指定色(例えば赤)に変えるにはどうしたらよいか教えてください。 例:A列の1~1000行の各行に文字データが入力されている。これらのデータの内"ABC"という文字列だけ一括して赤色にかえたい。

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • 【マクロ】クリックすると空白を含む列を非表示に

    上司にExcelのデータが見づらいと言われて困っています。 下記のようなマクロやVBAを教えていただけないでしょうか? 例えば、 A2のセルをクリックすると、その行(2行目)から空白セルを検索して、そのセルを含む列を非表示にして、データが入っている列だけを表するようなマクロってないでしょうか? (要は、C2とE2が空白セルのとき、A2をクリックして、A/B/D/F~の列だけ表示されるようになるマクロです。 同様に3行目でも、空白セルがB3、C3なら、A3をクリックした時、A/D/E…列だけ表示されて、B・C列が非常時になるような。) 似たような機能があれば、A2クリックでなく別にボタン等を作っても構いません。 ややこしくて、申し訳ございませんが、本当に困っているので、 どうかよろしくお願いいたします。

  • 空白を埋めるマクロについて

    マクロで教えて下さい! A B C D    ...... 数量 名前 種類 購入者  .... 1  2  あ  A 2    く 3 5 DD 4          まま 5    さ 6          ぱぱ と右は何十項目・下は何千行と項目が続くデータがあります。 この空白に上の文字をコピーし埋めて行くマクロを作成するにはどうしたら良いでしょうか? ただし以下の条件があります。 (1)D列の様に1行目が空白のセルは4行目の様に文字が入っている所までは空白のまま (2)A列はそのファイルにより何行目までデータが入っているかは不明 A B C D     数量 名前 種類 購入者   1  2  あ  A       2  2  く A 3 5 く DD 4  5  く DD   まま 5  5  さ DD まま 6  5  さ DD   ぱぱ 宜しくお願い致します。

  • エクセルマクロ、集計行の上に空白行挿入

    エクセルデータがA、B、C、D、E列1000行まであります。 C列基準でE列を合計するマクロを作成しましたが(集計行はデータの下に挿入)、実行の結果、新たに挿入される集計行の上に空白行を1行挿入していくということを、作成したマクロに付加できるでしょうか? ご教授頂きたく、お願いします。

  • EXCELのマクロにて

    EXCELのにて連続したデータを入力したデータベースがあります。(行が5000、列がAAまで) このデータベースのデータの最終行だけを指定して違うシートにコピー・貼り付けがしたいのです。 マクロにてこのような作業をするときにはどういった文をかけばよいですか。

  • マクロを使って最終行を取得して、範囲内の空白セルに

    マクロを使って最終行を取得して、範囲内の空白セルに指定の文字列を表示させたいです。 お世話になります。 要件としてはタイトルの通りです。 Excel2013を利用しています。 A列を参照して最終行を取得し、 B列の1~最終行までの空白セルに対して「未入力」という文字列を入力したいです。 この場合、考え方はいろいろあるのでしょうが どのようにコードを組めば良いでしょうか? 自分では、まったく書けていないというのが正直なところです。 そこで御手数ですが、ご協力をお願いいたします。

  • A列の文字列によってB列への入力を変える

    こんにちは。マクロ初心者で、質問なのですが、 エクセルで、A列に入力されている文字列によって、 B列文字を自動で入力するマクロを作成したいのですが、 どのように記述すればよいでしょうか? 例: A列 |B列 |  あ | 01 |A列「あ」の場合、B列の同じ行に「01」  い | 02 |A列「い」の場合、B列の同じ行に「02」 といった感じです。 初歩的な質問で申し訳ございませんがご教授願います。

  • エクセル マクロ 特定の文字の検索と貼り付け

    こんにちは、エクセル2010を使っています。 マクロでデータを抜き出したいのですが、詳しくないので教えて頂けませんか? Sheet2の A列に 【日付】 ←括弧は無し が入っていたら A~M列のその行から下に50行ほどを抜き出し Sheet3に上から順に貼り付けたいと思います。 仮に A1セルに 日付 と あったら、A1~Mの50を抜き出し貼り付けると言うことです。 一度貼り付けたら、A列に 日付の文字がなるなるまで繰り返したいと思います。 詳しいかた、よろしくお願いします。 ちなみに ボタンで実行します。

  • エクセル 特定の文字列から範囲を指定

    エクセル 名前定義の範囲について質問です。 始まり・終わりの行・列を示す特定の文字列を設定し、 それを元に自動で範囲を変化させるようなことはできませんでしょうか。 例えば、 B1:列ここから D1:列ここまで A3:行ここから A6:行ここまで と書かれていた場合、 名前定義の範囲が自動で「B3:D6」となるような方法を探しています。 なお、 ・列を指定する文字列は必ず1行目に ・行を指定する文字列は必ずA列目に あるという想定です。 極力マクロを使用しない方法で、有効なものがございましたら ご指導のほどよろしくお願いします。

専門家に質問してみよう