如何根据另一个单元格中的值将单元格范围复制到新工作表

时间:2017-09-07 21:19:29

标签: excel vba excel-vba

逐行,如果J到N列中的任何单元格包含单词"是",我需要复制A到I列中的单元格。此外,如果有“是”的话。我还需要复制列标题名称。例如,如果列K,第3行有一个"是"然后我需要从A列到第3行的所有单元格复制到一个新工作表,从B列开始,第1行(如果它是第一个"是结果")。列A,第1行将是列K的标题名称。我需要这样来运行所有的Yes结果,每次在单独的工作表上创建一个新行。

另外,每次运行代码时,它都会从头开始空白。

图片是

之前和之后的样子

在:

Before

后:

After

1 个答案:

答案 0 :(得分:0)

对不起,我还没有看到你的问题。我添加了一些代码来处理工作簿中的更多数据。但正如你在我的图像中所看到的那样,我将返回多个为多个是的。复制此代码并重新运行,然后发布您的结果,这可能有助于我了解您的问题。

Option Explicit
Sub YesToSheet()
Dim r As Long 'Used to loop Rows
Dim totR As Long 'Used to count Rows
Dim c As Long 'Used to loop Columns
Dim dest As Worksheet 'Used for Destination Worksheet
Dim home As Worksheet 'Used for source worksheet
Set home = ActiveWorkbook.ActiveSheet
Set dest = ActiveWorkbook.Worksheets.Add
home.Activate

totR = Application.WorksheetFunction.CountA(Range("A:A"))
    For r = totR To 2 Step -1
        For c = 11 To 14
            If UCase(Cells(r, c).Value) = "YES" Then
                Range(Cells(r, 1), Cells(r, 1).Offset(0, 9)).Copy
                dest.Cells(1, 2).Insert xlShiftDown
                dest.Cells(1, 2).PasteSpecial xlPasteValues
            End If
        Next c
   Next r

   dest.Activate
   totR = Application.WorksheetFunction.CountA(Range("B:B"))
   For r = 1 To totR
        Cells(r, 1).Value = "Stake" & r
   Next r
End Sub

Before

After

相关问题