[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一定の範囲内で空白セルを詰める』(キミ)
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も上へずれると思いますが 詰め終わったら終了でいいのかなぁ?(通行人)
失礼しました。見出し行位置は変わりませんね。(通行人)
マクロは目的通りに動きました。 ところで、実は、マクロを教えて頂いたあとで 開始のセル番号や見出しのセル番号を自分で変更しようと 安直に考えていたのですが、内容が私には高度すぎて とても自分で変更できないようで愕然としています。 @開始のセルを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
ご指導ありがとうございます。 解説文のお蔭で、少し内容がわかりました。 実はA行もF行に変える必要があったのですが さすがにそれは自分でもできました。 まだまだ勉強足らずですので これから頑張ってみます。 (キミ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.