java excel空格怎么表示_使用VBA代码处理Excel中的空白值

快速回答:

使用 Worksheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial SkipBlanks = False

来自MSDN的参考:

SkipBlanks True表示剪贴板范围内的空白单元格不会粘贴到目标范围内 . 默认值为False .

但是,使用 Select 不被视为良好做法 . 考虑阅读this以获取更多信息 . 对于复制粘贴范围,我不能推荐更多Chip Pearson's page .

演示:

Sub test()

Dim LastRow As Long Dim arCopy() As Variant

Dim rDest As Range

With Sheet2 ' --> Qualify the ranges

LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 End With

arCopy = Sheet1.Range("A2:K2").Value

Set rDest = Sheet2.Cells(LastRow, "A")

Set rDest = rDest.Resize(1, UBound(arCopy, 2))

rDest.Value = arCopy

End Sub

工作表Sheet1:

6qR8D.png

Sheet2之前:

cdb948af152c6d7e272df2fd9629adb8.png

Sheet2之后:

ARQ0A.png

上面有一个额外的好处,你不必担心空单元格,因为它们是默认复制的 .

我希望这有帮助!

EDIT (解决评论)

确实,自 SkipBlanks = False 默认情况下, PasteSpecial 不会跳过空白 . 你确定你的细胞确实是空白的并且看起来不是空白的吗?您可以使用 ISBLANK() 功能快速检查 . 如果 SkipBlanks 似乎只运行了一些时间,那么它应用的单元格肯定会有所不同 .

With ... End With :这是一种增强可读性的快捷方式构造 . 基本上,一组方法或属性在同一个对象下,例如

Sheet1.Range("A1")="Rob"

Sheet1.Copy("A2")

Sheet1.Rows.Count

可写成

With Sheet1

.Range("A1") = "Rob"

.Copy("A2")

.Rows.Count

End With

这增强了可读性

你的第二个建议

我们可以为例如指定一些值吗?对于那些空白单元格为NULL或0,以便新响应可以存储在新行中 .

原则上,这是可能的 . 但是,您应该确定哪些单元格是"blank",并且我们已经知道一个不跳过空白的方法似乎不起作用,因此识别空白单元格并替换它们是一个问题22.换句话说,如果我们知道如何找到这些"blank"单元格,以便我们将它们分配为NULL或0,然后 SkipBlanks 将以更优雅的方式处理它们(因为它的目的就是这样做) .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值