[[20160825112017]] 『セルの移動と行の削除』(ぜりー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルの移動と行の削除』(ぜりー)

A列の文字列が入ってる場合、そのセルを1つ上のセルに移動させたいです

    A列  
1行目   
2行目 ヘルプ
3行目  
4行目 テスト
5行目

こうなっていた場合にA列2行目のヘルプをA列1行目に、A列4行目のテストを3行目に移動させて、そのあとに2行目と4行目を削除したいです。
 
5行目以降もあるので可能ならVBAで実施したいと思っております。
ご教授のほど、よろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


オートフィルタを設定して、空欄行を選択し、まとめて削除では駄目なのでしょうかね?
B列以降にもデータがあって、A列だけ変える、という事なのかもですが。

 Sub test()
    Dim i As Long

    For i = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
        If Cells(i, "A").Value = "" Then
            Cells(i, "A").Value = Cells(i + 1, "A").Value
            Rows(i + 1).Delete
        End If
    Next i
 End Sub
(???) 2016/08/25(木) 11:44

言葉足らずで申し訳ありません、本欄は

    A列    B列     C列   D列 …  AZ列
1行目       あいうえお        2     アイウ
2行目 ヘルプ   かきくけこ 3     カキク
3行目       さしすせそ  4     サシス
4行目 テスト   たちつてと 5      タチツ
5行目

こうなっていた場合にA列2行目のヘルプをA列1行目に、A列4行目のテストを3行目に移動させて、そのあとに2行目と4行目を削除したいです。
列はAZくらいまで使用していて、2行目や4行目にも文字がはいってたり空白だったりしますが、気にせずに削除を実施したいと考えております。
(ぜりー) 2016/08/25(木) 13:46


 こんなことですか?

 Sub Sample()
    Dim w As Variant
    Dim x As Long

    w = Range("A1", Range("A" & Rows.Count).End(xlUp)).Value

    For x = 2 To UBound(w, 1)
        If w(x, 1) <> "" Then
            w(x - 1, 1) = w(x, 1)
            w(x, 1) = Empty
        End If
    Next

    Range("A1").Resize(UBound(w, 1)).Value = w
    On Error Resume Next
    Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0

 End Sub
(β) 2016/08/25(木) 13:56

例えば2行目の場合、A列だけを1行目に移動させて、他の列は1行目のまま。で、2行目を消すのですよね?
最初からそういうコードを書いたつもりですが、動かしてみましたか?

オートフィルタの話は、コードを書かずに実現する方法であり、B列以降は2行目のデータが残るから、そうじゃないんですよね?、という意味で書きました。 処理後の例も書いていただけると、誤解が無かったと思います。
(???) 2016/08/25(木) 15:09


お礼が遅くなり申し訳ありません。

今後は、処理後の例も載せてみるようにします。
言葉足らずでも、回答してくださったお二人に感謝してます。
ありがとうございます

(ぜりー) 2016/08/25(木) 17:08


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.