我有一个来自我的工作代码的代码片段,它将来自其他工作表的数据复制并粘贴到一个masterworkbooks mastersheet。下面的代码允许我将数据从BX列复制并粘贴到列A的第一个空行,并对列CC到列B的第一个空行执行相同的操作。但是,我想将列CC粘贴到B列(第10行)。我怎么能这样做?
lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row
With copySheet.Range("BX2:BX" & lRow)
pasteSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
.Resize(.Rows.Count, .Columns.Count) = .Value
End With
'Determine last row of Column B in copySheet
lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row
With copySheet.Range("CC2:CC" & lRow)
pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0)
.Resize(.Rows.Count, .Columns.Count) = .Value
End With
您能告诉我如何确定要复制的行数吗?
编辑:现在我想为另一列添加if
条件,应该说:
如果
工作表“数据”中的列U具有单元格值“8636”,然后是这些值 应粘贴到工作表“KomKo”(浆料表)中的H列;到了 下一行,因为我在“with”部分使用了上面的代码。
否则(如果H列中的值不是8636)则应粘贴
此列中的值到工作表“KomKo”(浆料表)中的G列 与上述相同的偏好
我该怎么做?
答案 0 :(得分:2)
将pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value
更改为pasteSheet.Range("B10").Resize(.Rows.Count, .Columns.Count) = .Value
*************回答问题编辑**************** *******添加了maxR - H列和G *******的最后一行 你可以做这样的事情来得到你需要的东西:
Sub check8636values()
Dim copySheet, pasteSheet As Worksheet
Dim lRowU, lRowH, lRowG, maxR, i As Long
'Dont forget to change to the correct sheet names!!!!
Set copySheet = ThisWorkbook.Sheets("data")
Set pasteSheet = ThisWorkbook.Sheets("KomKo")
lRowU = copySheet.Cells(copySheet.Rows.Count, "U").End(xlUp).Row
For i = 1 To lRowU
lRowG = pasteSheet.Cells(pasteSheet.Rows.Count, "G").End(xlUp).Row + 1
lRowH = pasteSheet.Cells(pasteSheet.Rows.Count, "H").End(xlUp).Row + 1
maxR = Application.Max(lRowG,lRowH)
If copySheet.Cells(i, "U").Value = "8636" Then
pasteSheet.Cells(maxR, "H").Value = copySheet.Cells(i, "U").Value
pasteSheet.Cells(maxR, "Y").Value = copySheet.Cells(i, "T").Value
Else
pasteSheet.Cells(maxR, "G").Value = copySheet.Cells(i, "U").Value
pasteSheet.Cells(maxR, "X").Value = copySheet.Cells(i, "T").Value
End If
Next i
End Sub
答案 1 :(得分:2)
由于您只处理单列范围,因此With-End With
块不需要缩写Resize
方法参数:仅使用lRow
作为第一个1}}
此外,由于您没有显示copySheet
和pasteSheet
是否来自同一工作簿,因此在.Rows.Count
之前引用它们更安全,并防止从源工作簿excel版本派生问题< / p>
'Determine last row of Column B in copySheet
lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row
pasteSheet.Cells(pasteSheet.Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(lRow) = copySheet.Range("BX2:BX" & lRow).Value
pasteSheet.Range("B10").Resize(lRow).Value = copySheet.Range("CC2:CC" & lRow).Value