我有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
答案 0 :(得分:0)
尝试以下方法:
Cell.copy Cell.offset(0, 2)
或
Cell.offset(0,2).value = Cell.value
在定义像Cell一样的范围时,不需要使用select命令。选择由宏录制器使用,但通常在修改代码时用范围名称替换。像你一样设置范围也打开了Excel中包含的所有属性和方法的大门。
要了解详情,请输入Cell。获取可用于读取或为活动单元格指定属性的可能属性和方法的列表。