如何用VBA判断符合条件的数据复制粘贴到相应工作表?

1.如果H列中,从上至下第1个数是4,第二个数大于等于5以上,第三个数小于等于4,那么就复制相领三列,即FGH列复制粘贴到A工作表中2.如果L列中,从上至下第1个数是4,第二和第三个数大于等于5以上,第四个数小于等于4,那么就复制相领三列,即JKL列复制粘贴到B工作表中3.如果P列中,从上至下第1个数是4,第二三四这三个数大于等于5以上,第五个数小于等于4,那么就复制相领三列,即NOP列复制粘贴到C工作表中4..如果T列中,从上至下第1个数是4,第二三四五这四个数大于等于5以上,第六个数小于等于4,那么就复制相领三列,即RST列复制粘贴到D工作表中5.如果X列中,从上至下第1个数是4,第二三四五六这五个数大于等于5以上,,第七个数小于等于4,那么就复制相领三列,即VWX列复制粘贴到E工作表中注意A:依次判断H列,L列,P列,T列,X列,AB列,AF列 ,AJ列..........一直到GV列. B:将符合条件的依次排列复制粘贴到ABCDE工作表中 C:例如FGH列复制粘贴到A工作表。JKL列复制粘贴到B工作表。NOP列复制粘贴到C工作表。即RST列复制粘贴到D工作表。即VWX列复制粘贴到E工作表。

可以使用VBA中的If语句和For Each循环来实现。
首先,在VBA中定义符合条件的数据,可以使用类似下面的代码:
Dim targetSheet As Worksheet
Dim sourceSheet As Worksheet
Dim lastRow As Long
Dim i As Long

Set sourceSheet = Worksheets("Sheet1") ' 指定源数据所在工作表
Set targetSheet = Worksheets("Sheet2") ' 指定目标工作表
lastRow = sourceSheet.Cells(Rows.Count, 1).End(xlUp).Row ' 获取最后一行数据

For i = 2 To lastRow ' 逐行遍历源数据
If sourceSheet.Cells(i, 1) = "需要筛选的条件" Then
' 如果符合条件,则将该行数据复制到目标工作表的最后一行
sourceSheet.Rows(i).Copy
targetSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Next i

上述代码中,"需要筛选的条件"可以是一个数字、文本或者其他类型的条件。如果某一行数据的第一列与该条件相等,那么该行数据就符合条件,可以将该行数据复制到目标工作表。
在上述代码中,使用了Offset函数来确定目标工作表的最后一行,然后复制源数据中符合要求的行到该行的下一行。这样可以避免每次都从第一行开始复制,覆盖已经存在的数据。
需要注意的是,上述代码中只是其中一个示例,具体实现方法需要根据具体的需求和数据结构进行调整。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-02-04
以下是可以实现上述条件的示例代码:
Sub CopyData()
Dim i As Integer, j As Integer, lastRow As Integer, targetSheet As Worksheet
javaCopy codelastRow = Cells(Rows.Count, "H").End(xlUp).RowFor i = 1 To lastRow
If Cells(i, 8).Value = 4 Then
If Cells(i + 1, 8).Value >= 5 And Cells(i + 2, 8).Value <= 4 Then Set targetSheet = Worksheets("A")
targetSheet.Range("F" & targetSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 & ":H" & targetSheet.Cells(Rows.Count, "A").End(xlUp).Row + 2).Value = Range("F" & i & ":H" & i + 2).Value
End If
End If
Next ilastRow = Cells(Rows.Count, "L").End(xlUp).RowFor i = 1 To lastRow
If Cells(i, 12).Value = 4 Then
If Cells(i + 1, 12).Value >= 5 And Cells(i + 2, 12).Value >= 5 And Cells(i + 3, 12).Value <= 4 Then Set targetSheet = Worksheets("B")
targetSheet.Range("J" & targetSheet.Cells(Rows.Count, "B").End(xlUp).Row + 1 & ":L" & targetSheet.Cells(Rows.Count, "B").End(xlUp).Row + 3).Value = Range("J" & i & ":L" & i + 3).Value
End If
End If
Next ilastRow = Cells(Rows.Count, "P").End(xlUp).RowFor i = 1 To lastRow
If Cells(i, 16).Value = 4 Then
If Cells(i + 1, 16).Value >= 5 And Cells(i + 2, 16).Value >= 5 And Cells(i + 3, 16).Value >= 5 And Cells(i + 4, 16).Value <= 4 Then Set targetSheet = Worksheets("C")
targetSheet.Range("N" & targetSheet.Cells(Rows.Count, "C").End(xlUp).Row + 1 & ":P" & targetSheet.Cells(Rows.Count, "C").End(xlUp).Row + 4).Value = Range("N" & i & ":P" & i + 4).Value
End If
End If
Next ilastRow = Cells(Rows.Count, "T").End(xlUp).RowFor i = 1 To lastRow
If Cells(i, 20).Value = 4 Then
If Cells(i + 1, 20).Value >= 5 And Cells(i + 2, 20).Value >= 5 And Cells(i + 3, 20).Value >= 5 And Cells(i + 4, 20).Value >= 5 And Cells(i + 5, 20).Value <= 4 Then Set targetSheet = Worksheets("D")
targetSheet追问

提示出错了

第2个回答  2023-02-02
楼上不想真心回答的就别答了。我看懂你的意思了,如果第一个数是4,第2个数大于5,第23个大于5,第234大于5,以此类推。这里边肯定要用到循环函数初始i=1,然后每循环一次i+1。
我这里有个疑问,如果L列第一个数不是4,或者L列第2个第3个数不大于5,那就是不复制粘贴,接下来P列是选按照23大于5,4小于等于4执行还是,234大于5,5小于等于4执行。
第3个回答  2023-02-02
首先,您需要定义筛选条件,然后根据这些条件来筛选数据。接下来,您需要创建一个For Next循环,以确定是否符合所定义的条件。一旦确定符合条件的数据,您就可以使用Range.Copy方法来将它复制到相应的工作表中。最后,您可以使用Range.PasteSpecial命令来将数据粘贴到目标工作表。
第4个回答  2023-02-02
复制粘贴数据符合规定的从一个工作表到另一个使用VBA,您可以使用一个循环语句来遍历Excel文件和一个if语句中的数据来确定它是否符合标准。然后,您可以使用复制和粘贴的方法将数据从一个工作表到另一个地方。例如,您可以使用VLOOKUP函数搜索表中的值。您还可以使用索引或匹配功能。或者,您可以编写一个宏,它使用一个if语句检查特定的细胞值,然后将整个行包含这些值到另一个工作表。
相似回答