Excel公式或VBA复制单元格删除空白?

时间:2014-02-22 08:05:56

标签: excel vba cell formula

我希望将单元格A1:B100复制到D1:E100但是删除空白..这可以通过公式实现还是我必须使用VBA?

以下是一个示例:enter image description here

2 个答案:

答案 0 :(得分:3)

有一种简单的方法:

初始数据:

enter image description here

第1步:A:B复制所有数据。选择D1,右键单击并选择 PasteSpecial-> PasteValues

enter image description here

第二步:所选范围包含D:E列中的数据(在我的情况下为D1:E8),按 CTRL + G

enter image description here

步骤3:GoTo对话窗口中按 Special ... 并选择空白

enter image description here

Step4:现在选择了D1:E8中的所有空单元格。

enter image description here

Step5:右键单击amy 选定的单元格,然后按删除

enter image description here

Step6:选择“向上移动单元格”并按确定完成!

enter image description here

<强>结果:

enter image description here


UPD:作为评论的后续跟踪,OP在=IF(Sheet1!D11="YES",Sheet1!A11, "")中有A:B。由于""实际上不是空白单元格,因此我们无法使用 Special-&gt; Blanks

有VBA解决方案:

Sub test()
    Dim lastrow As Long
    Dim cell As Range
    Dim rng As Range

    'change sheet name to suit
    With ThisWorkbook.Worksheets("Sheet1")
        'find lastrow in columns A:B
        lastrow = Application.Max(.Cells(.Rows.Count, "A").End(xlUp).Row, _
                                    .Cells(.Rows.Count, "B").End(xlUp).Row)
        'Copy values from A:B to D:E
        .Range("D1:E" & lastrow).Value = .Range("A1:B" & lastrow).Value
        'Iterates throught each cell in D:E and if it equals to "" - remember it
        For Each cell In .Range("D1:E" & lastrow)
            If cell.Value = "" Then
                If rng Is Nothing Then
                    Set rng = cell
                Else
                    Set rng = Union(rng, cell)
                End If
            End If
        Next
        'delete all empty cells (with "")
        If Not rng Is Nothing Then rng.Delete Shift:=xlUp

    End With
End Sub

答案 1 :(得分:0)

1)首先,在对任何工作簿进行任何重大更改之前,请务必确保备份副本或最近保存的副本,以备需要恢复原始数据时使用。

2)现在,从列表顶部到底部的一列中选择单元格。

3)确保所选范围内的所有空白单元格都是您要删除的行。

4)按键盘上的F5键(或选择编辑,转到)。

5)单击特殊...按钮。

6)单击“空白”选项,然后单击“确定”。这将选择您之前选择的范围内的所有空白单元格。

7)现在选择Edit,Delete,选择Entire Row选项,然后单击OK。

8)我认为这可以满足您的要求,如果您仍想复制,请选择所有单元格并复制到其他单元格。