1

一見単純な問題:

列 A:E にデータがあります。列 E には、いくつかの行にいくつかの空白セルがあります。

E の空白セルを含む ALL THE ROW を削除したいと思います。ただし、キャッチは次のとおりです。後続の列に他のデータがあります。行全体を削除すると、このデータも削除されますが、これは望ましくありません。

より具体的には、(1)列Eの空白セルを確認する必要があります(2)空白セルが見つかった場合、このセルを含む行をクリアしますが、列A:Eのみです(3)列のデータをシフトしますA:Eアップ

私は試した:

Range("E2:E100").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp

ただし、これは行全体ではなく、列 E のデータのみをシフトします。

もちろん、私は使用できます:

Range("E2:E100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

しかし、私が言ったように、これは私が望まない後続の列のデータを削除します。

任意のヒント?

ありがとう、

アル

4

2 に答える 2

2

全体をずらして行の一部を残すことはできません。これは矛盾です。あなたはこれをしたいようです:

Range("A" & row & ":E" & row).Delete Shift:=xlUp

行は、削除する行番号です

于 2012-07-25T14:54:30.320 に答える
0

「チャンク」でA:Eを削除するが、他の列をそのまま保持するには、完全な解決策はこれです

Sub PartKill2()
Dim rng1 As Range
Dim rng2 As Range
ActiveSheet.UsedRange
On Error Resume Next
Set rng1 = Columns("E").SpecialCells(xlBlanks)
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
For Each rng2 In rng1.Areas
rng2.Cells(1).Offset(0, -4).Resize(rng2.Rows.Count, 5).Delete xlUp
Next
End Sub

E が空白で、列 F:End が空白である行全体を削除する場合 (ただし、そうでない場合は行をそのままにしておく)、このより複雑なバージョンを使用できます。

Sub PartKill1()
Dim rng1 As Range
Dim lngCell As Long
Dim lngArea As Long
ActiveSheet.UsedRange
On Error Resume Next
Set rng1 = Columns("E").SpecialCells(xlBlanks)
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
For lngArea = rng1.Areas.Count To 1 Step -1
For lngCell = rng1.Areas(lngArea).Cells.Count To 1 Step -1
If Application.CountA(Range(rng1.Areas(lngArea).Cells(lngCell).Offset(0, 1), Cells(rng1.Areas(lngArea).Cells(lngCell).Row, Columns.Count))) = 0 Then
rng1.Areas(lngArea).Cells(lngCell).EntireRow.Delete
End If
Next
Next
End Sub
于 2012-07-26T04:37:24.280 に答える