我正在处理工作中的关键控股表。我已经创建了一个按钮宏来尝试并执行以下操作。
我希望能够遍历一列信息,如果单元格包含该列中的数据,则从同一行的另一列中获取数据,然后将其放入工作表中其他位置的新单元格中,添加它位于最后一个数据块之下。
我的代码如下:
Sub getLostKeys()
Dim k As Integer
Dim kMove As Integer
Dim cellKeyNum As String
Dim newCellKeyNum As String
Dim Kcolumn As String
Dim Ccolumn As String
Dim refCell As String
Dim outputCell As String
Kcolumn = "K"
Ccolumn = "C"
For k = 2 To 301
If Cells(k, 8) <> "" Then
cellKeyNum = CStr(k)
kMove = k + 6
newCellKeyNum = CStr(kMove)
refCell = Ccolumn & cellKeyNum
outputCell = Kcolumn & newCellKeyNum
Range(outputCell).Value = Range(refCell)
End If
Next k
End Sub
它编译得很好并且代码运行并满足条件罚款,但它不会将单元格信息移动到新单元格。
任何帮助都会非常感谢!
答案 0 :(得分:0)
If Cells(k, 8) <> "" Then
kMove = k + 6
Range("K" & kMove).Value = Range("C" & k).Value
End If
应该有效(删除所有那些无用的变量)
答案 1 :(得分:0)
您应该使用Strings
,而不是使用Cell()
设置Ranges
值。
试试这个:
Sub getLostKeys()
Dim k As Integer, kMove as Integer
Dim Kcolumn As Long, Ccolumn As Long
Dim refCell As Range, outputCell As Range
Kcolumn = 11 ' "K"
Ccolumn = 3 ' "C"
For k = 2 To 301
If Cells(k, 8) <> "" Then
kMove = k + 6
Set refCell = Cells(k, Ccolumn)
Set outputCell = Cells(kMove, Kcolumn)
outputCell.Value = refCell.Value
End If
Next k
End Sub
注意:我已经做了一两个假设,所以如果这个错误,或者不起作用,可能有助于查看数据样本。
编辑:此外,除非301
永远不会改变为最后一行,否则如果找到第8列的lastRow,则会有一个更强大的宏,因此它更具动态性,如果说有200行或4999则会更改行。