[[20120731103600]] 『一定の範囲内で空白セルを詰める』(キミ) ページの最後に飛ぶ

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

 

『一定の範囲内で空白セルを詰める』(キミ)
 A列に仮に60行程度文字列が入っているとして
 その中にランダムに空白のセルが発生した場合に
 仮に10列ごとに区切ってその中の空白セルを上に
 詰めたいのですが、どのようにしたらよいでしょうか?
 10列ごと=A1〜A10、A11〜A20、A21〜A30…
 各行の最初A1,A11…に見出しが入っているため
 それに合わせて下の10行の空白を詰めたいのです。
 よろしくお願いします。

 B列に作業列を挿入し、
 データ範囲に下記の式を設定して、値に置き換え(形式を選択して貼り付け)
   =INT((ROW()-1)/10)*10+IF(A1="",9.9,MOD(ROW()-1,10))
 AB列をソート後にB列を削除
 でどうでしょうか。

 上記手順をマクロで書くとこんな感じです。
 Sub Sample()
    Columns("B").Insert
    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    With Range("B1").Resize(lastrow, 1)
        .Formula = "=INT((ROW()-1)/10)*10+IF(A1="""",9.9,MOD(ROW()-1,10))"
        .Value = .Value
    End With
    Range("A1").Resize(lastrow, 2).Sort key1:=Range("B1"), Header:=xlNo
    Columns("B").Delete
 End Sub
 (Mook)

 空白を詰めたら見出しの行A11やA21も上へずれると思いますが
 詰め終わったら終了でいいのかなぁ?(通行人)

 失礼しました。見出し行位置は変わりませんね。(通行人)


Mookさん書き込みありがとうございます。
 マクロは目的通りに動きました。
 ところで、実は、マクロを教えて頂いたあとで
 開始のセル番号や見出しのセル番号を自分で変更しようと
 安直に考えていたのですが、内容が私には高度すぎて
 とても自分で変更できないようで愕然としています。
 @開始のセルをA5からにするには何処を変更したらよいですか?
 A「10列ごと」から「15列ごと」にするからにするには何処を変更したらよいですか?
 二度手間で申し訳ありませんがよろしくお願いします。
 (キミ)

 マクロの全体を理解できなくても、まずは式を理解してはどうかと思います。
 A5から15行毎にした例です。

 修正:式の不要部分を削除
 (Mook)

 Sub Sample()
    Columns("B").Insert
    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    With Range("B5").Resize(lastrow, 1)  '// B1->B5
        .Formula = "=INT((ROW(A1)-1)/15)*15+IF(A5="""",14.9,MOD(ROW(A1)-1,15))"  '// A1->A5, ROW()->ROW(A1), 10->15, 9.9->14.9
        .Value = .Value
    End With
    Range("A5").Resize(lastrow, 2).Sort key1:=Range("B5"), Header:=xlNo  '// A1-> A5, B1->B5
    Columns("B").Delete
 End Sub


Mookさま。
 ご指導ありがとうございます。
 解説文のお蔭で、少し内容がわかりました。
 実はA行もF行に変える必要があったのですが
 さすがにそれは自分でもできました。
 まだまだ勉強足らずですので
 これから頑張ってみます。
 (キミ)

コメント返信:

[ 一覧(最新更新順) ]


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