将一个数据区域粘贴到一个新列中——省略空单元格,但保留同一行



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

即: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)

每隔一段时间,我就必须手动将这些值粘贴到工作表中的其他两列中(C列和D列),其中应该替换一些单元格中已经存在的其他数据。。。例如,如果有值要复制,它会粘贴进去,但如果没有值,它会保留C和D列中的现有数据。

当我告诉它"特别粘贴"one_answers"跳过空白"时,它仍然将"(空)单元格计算为非空白,因为其中隐藏了公式,然后用空单元格值覆盖C和D列中某些单元格中的现有数据。

我想写一个宏,选择我的源范围,并在范围A2:B1200中循环(使用范围中的"For each cell"),只复制和粘贴不为空的单元格,从而保留我的旧数据。

我通过蚕食其他功能达到了某种程度。我看不出它会如何将非空值粘贴到另一个单元格(向右偏移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

尝试以下操作:

Cell.copy Cell.offset(0, 2)

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

在定义范围时,不需要像对"单元格"那样使用选择命令。Select由宏记录器使用,但在修改代码时通常会用范围名称替换。像您那样设置一个范围也为Excel中包含的所有属性和方法打开了大门。

要了解更多信息,请键入Cell。获取可用于读取或为活动单元格分配属性的可能属性和方法的列表。

相关内容

最新更新