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

Excel公式或VBA复制单元格删除空白?,excel,vba,cell,formula,Excel,Vba,Cell,Formula,我希望将单元格A1:B100复制到D1:E100,但删除空白。。这是通过公式实现的,还是我必须使用VBA 这里有一个例子:1)首先,在对任何工作簿进行任何重大更改之前,请务必确保您有备份副本或最近保存的副本,以防需要恢复原始数据 2) 现在,从列表顶部到底部选择一列中的单元格 3)确保选定范围内的所有空白单元格都是要删除的行。 4) 按键盘上的F5键(或选择编辑、转到) 5) 点击特殊的。。。按钮 6) 单击空白选项,然后单击确定。这将选择您先前选择的范围内的所有空白单元格 7) 现在选择Ed

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

这里有一个例子:

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

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

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

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

5) 点击特殊的。。。按钮

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

7) 现在选择Edit,Delete,选择整行选项并单击OK


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

有一种简单的方法:

初始数据:

步骤1:
A:B
复制所有数据。选择
D1
,右键单击并选择粘贴特殊->粘贴值:

第2步:在选定范围内,数据列为
D:E
(在我的示例中为
D1:E8
)按CTRL+G

步骤3:
转到
对话框窗口中,按特殊。。。然后选择空格

步骤4:现在选择
D1:E8
中的所有空单元格

第5步:用鼠标右键单击选定单元格,然后按Delete键

步骤6:选择“向上移动单元格”,然后按OK完成

结果:


UPD:作为评论的后续,OP在
A:B
中有
=IF(Sheet1!D11=“YES”,Sheet1!A11“”)
。由于“
实际上不是空白单元格,我们不能使用特殊->空白

有一个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

感谢Toms,这将起作用,但是我有A1:B100从公式中提取数据,我相信这将删除我的公式:(…我使用=IF(Sheet1!D11=“YES”,Sheet1!A11,”)…这在A1中,然后我将其复制到A100,以此类推。我尝试过这种方法,但是我在a&B中使用公式,所以它不会起作用:(见我更新的答案(步骤1)。您可以使用PasteSpecial->PasteValies仅粘贴D列中的值:Ethat我正在做的是粘贴值,但是当我删除空白时,Excel仍然认为单元格中有他们的内容,我无法理解。我正在使用代码(底部)从表1中提取数据。=如果(Sheet1!D11=“YES”,Sheet1!A11,”)@Jacko058,查看我的VBA解决方案更新答案谢谢,我现在可以使用了..使用公式&VBA删除值时会变得复杂:(可以使用,但需要多运行2页,但没问题。谢谢:)-Jacko