繁体   English   中英

Excel VBA-如果单元格值满足条件,则在工作表之间复制单元格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM