[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『空白セルの上詰めについて』(ゆり)
空白のセル部分を行は削除せずに上に詰める方法を
ご教授お願いします。
空白は、式も何も入っていないただの空白です。
下記コードは検索で探しましたが、VBAはよくわからない為
宜しくお願いします。
現在使用の表構成です。
2配列でA〜E と F〜J の配列です。
空白になるのは左(A〜E)であればA〜Eが空白になります。
右(F〜J)であればF〜Jが空白になります。
A B C D E | F G H I J
|
5 あ い う え お | さ し す せ そ
6 | た ち つ て と
7 は ひ ふ へ ほ |
8 | ま み む め も
下記のコードで上につまりますが、行は削除せず内容のみ上詰めにしたいです。
Sub Sample()
Dim r As Range
Dim d As Range
With Range("A5", ActiveSheet.UsedRange).Columns("A:J")
Set d = .Offset(.Rows.Count).Cells(1)
For Each r In .Rows
If WorksheetFunction.CountBlank(r) = r.Cells.Count Then Set d = Union(d, r.EntireRow)
Next
End With
d.EntireRow.Delete
End Sub
宜しくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
(マナ) 2020/09/26(土) 11:27
下の状態だったら、どうなればいいんですか?
A B C D E | F G H I J
|
5 あ い う え お | さ す せ そ
6 | た ち つ て
7 は ひ へ ほ |
8 ふ | ま み む も
(半平太) 2020/09/26(土) 12:19
マナさま
ありがとうございます。
ジャンプ機能、調べてやってみます。
半平太さま
ありがとうございます。
A〜E列もF〜J列も横並びの5項目(5項目で1つ?と言う感じで)が全て入力されるか、されないかに
なります。
なので行で4項目になったりは無いので、横並びの5項目を上に詰めます。
空欄となるのは、必要でない部分を任意に削除しております。
(ゆり) 2020/09/26(土) 13:15
Sub Macro5()
'
' Macro5 Macro
'
'
Range("A5:J12").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
End Sub
(マナ) 2020/09/27(日) 08:29
ご教授ありがとうございます。
まずジャンプの空白セル削除を実際にやってみました。
なるほど。こんな機能があるとは・・
又、私もマクロの記録で実際に記録してみました。
結果としては、どちらも同じ結果ですが、ジャンプからの方は
若干、罫線が消える部分があるので、マクロの記録の方を使いたいと
思います。
ありがとうございました。
(ゆり) 2020/09/28(月) 08:45
なんか、削除って言葉が気になるんで、削除しない方法で・・・
文字を入れ替えているだけなので、罫線も残ったままです。
>A〜E列もF〜J列も横並びの5項目(5項目で1つ?と言う感じで)が全て入力されるか、されないかに
Sub test()
Dim rw As Variant
Dim i As Long
Dim n As Long '------上詰めのカウント
Dim tbl As Variant '-元データの格納
Dim ans As Variant '-出力結果の格納
'//A:E列の矩形範囲とF:J列の矩形範囲をForEachでループ
For Each rw In Array(Range("E5", Cells(Rows.Count, "A").End(xlUp)), Range("J5", Cells(Rows.Count, "F").End(xlUp)))
n = 1
tbl = rw.Value
ReDim ans(1 To UBound(tbl, 1), 1 To 5)
For i = 1 To UBound(tbl)
If tbl(i, 1) <> "" Then '----//もし、A列またはF列が空白なら、ansのn行にtblのi行を代入する
ans(n, 1) = tbl(i, 1)
ans(n, 2) = tbl(i, 2)
ans(n, 3) = tbl(i, 3)
ans(n, 4) = tbl(i, 4)
ans(n, 5) = tbl(i, 5)
n = n + 1
End If
Next i
rw.Value = ans '-----------------//元の範囲に書き出し
Next rw
MsgBox "出力しました"
End Sub
(稲葉) 2020/09/28(月) 09:47
ご教授ありがとうございます。
早速実行した所、ちゃんと内容だけ
上に移動しました。
感謝です! 本当に、ありがとうございました。
(ゆり) 2020/09/28(月) 20:42
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.