![](/img/trans.png)
[英]Excel VBA copy from one sheet to other sheets specific cells based on criteria
[英]Excel VBA - Copy cells between sheets if cell value satisfies criteria
这段代码有效,但是它使用了dstRow.Row并将其用作要复制的行。 我不要 我想使用srcMatchRow = cell.Row
我想念什么?
Sub CopyCellsBetweenSheets()
Dim srcFile As String
Dim dstFile As Workbook
Dim srcSheet As Worksheet
Dim dstSheet As Worksheet
Dim cell As Range
Dim i As Integer
Dim lastRow As Integer
Set dstFile = Application.Workbooks.Open("C:\dev\t\each.xlsm")
Set srcSheet = ThisWorkbook.Worksheets("Final")
Set dstSheet = dstFile.Worksheets("RoomA")
srcLastRow = srcSheet.Range("A" & Rows.Count).End(xlUp).Row
dstRow = 11 'start copy on row 11
For Each cell In srcSheet.Range("A1:A" & srcLastRow)
If cell.Value >= 8 And cell.Value <= 10 Then
srcMatchRow = cell.Row
srcSheet.Range("A" & srcMatchRow & ":L" & srcMatchRow).Copy
dstSheet.Range("A" & dstRow & ":L" & dstRow).PasteSpecial
dstRow = dstRow + 1
End If
Next
End Sub
get cols A:L for rows that have a column A value of 8, 9, or 10 in srcFile. 对于srcFile中A列的值为8、9或10的行,特定示例获取cols A:L。 然后将这些相应的列复制到dstFile中的行11、12、13。
相反,它将找到匹配的列A单元格位于第20行,然后忽略该列,而是获取第11行中的所有内容,而不管其是否满足条件。
概括地说,我想从另一个符合条件的工作簿的一行中获取列,并保存到以dstRow开始的行中; dstRow为每个附加匹配增加1。
您需要弄清楚cell的值,因为它实际上是一个范围,可能是这样的:
For Each cell In srcSheet.Range("A1:A" & srcLastRow).Rows
这是不检查源数据的情况。
单元格已在工作表“最终”中使用公式进行了重新排序,因此我一直在复制公式。 解决方案是:
dstSheet.Range("A" & dstRow & ":L" & dstRow).PasteSpecial Paste:=xlPasteValues
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.