将一系列数据粘贴到新列中 - 省略空单元格,但保留相同的行

时间:2015-04-09 19:20:18

标签: excel vba paste

我有2列(A和B)中的数据,这些数据是通过每个单元格中的Excel公式生成的。并非所有单元格都具有可见值,但都具有嵌入式公式。

即:Col A

Row 1 = "677"  
Row 2 = ""     <-- (not empty as it has a formula)
Row 3 = "345"
Row 4 = ""     <-- (not empty as it has a formula)

我经常需要手动将这些值粘贴到工作表中的其他两列(Col C和D)中,它应该替换某些单元格中已存在的其他数据... I.E.如果有要复制的值,它将粘贴,但如果没有值,它将保留Col C和D中的现有数据。

当我告诉它选择Paste Special和#34;跳过空白&#34;时,它仍会计算&#34;&#34; (空)单元格由于其中隐藏的公式而非空白,然后用空单元格值覆盖Col C和D中某些单元格中的现有数据。

我想到了编写一个可以选择我的源范围的宏,然后循环遍历A2:B1200(使用&#34;对于每个单元格&#34;在该范围内),只复制和粘贴单元格不是空的,因此保留了我的旧数据。

我通过蚕食其他功能来达到某一点。我不知道如何将非空值粘贴到另一个单元格(向右偏移2列)。

编辑:

我现在正在改变我的方法,将我的范围设置为Cols C和D,并尝试将值拉入当前选定的单元格,而不是将值强制放入另一列....我稍后会更新我的代码示例(不是尚未完成)。

Public Sub CleanUpSpacedList()

Dim tfCol As Range, Cell As Object

Dim lastRow As Long
'evaluate last row
lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row

Set tfCol = Range("A2:A" & lastRow)

For Each Cell In tfCol

If IsEmpty(Cell) Then
  'nothing
Else
  Cell.Copy  
  'paste 2 cells to the right i.e. copy cell in col A to cell in col C
  'Selection.Offset(1, 0).Select  
  '-- stuck here
  'Cell.Paste
End If

Next

End Sub

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

Cell.copy Cell.offset(0, 2)

Cell.offset(0,2).value = Cell.value 

在定义像Cell一样的范围时,不需要使用select命令。选择由宏录制器使用,但通常在修改代码时用范围名称替换。像你一样设置范围也打开了Excel中包含的所有属性和方法的大门。

要了解详情,请输入Cell。获取可用于读取或为活动单元格指定属性的可能属性和方法的列表。