我希望将单元格A1:B100复制到D1:E100但是删除空白..这可以通过公式实现还是我必须使用VBA?
以下是一个示例:
答案 0 :(得分:3)
有一种简单的方法:
初始数据:
第1步:从A:B
复制所有数据。选择D1
,右键单击并选择 PasteSpecial-> PasteValues :
第二步:所选范围包含D:E
列中的数据(在我的情况下为D1:E8
),按 CTRL + G
步骤3:在GoTo
对话窗口中按 Special ... 并选择空白
Step4:现在选择了D1:E8
中的所有空单元格。
Step5:右键单击amy 选定的单元格,然后按删除
Step6:选择“向上移动单元格”并按确定。 完成!强>
<强>结果:强>
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)我认为这可以满足您的要求,如果您仍想复制,请选择所有单元格并复制到其他单元格。