VBA从Sheet1+;中的唯一列值创建新图纸;带来相邻行信息

VBA从Sheet1+;中的唯一列值创建新图纸;带来相邻行信息,vba,excel,Vba,Excel,VBA根据Sheet1+中的唯一列值创建新图纸,并覆盖相邻行信息 Hey all-我正在尝试创建一个脚本,该脚本标识列E中的唯一值(数据从第1行开始),基于这些唯一值创建一个新的工作表(也根据值命名工作表),并在创建的新工作表中提供列a、C、D和H中对应行的信息- 我找到了这个YouTube视频,它显示了这个过程,但不是脚本识别唯一的值,你必须手动输入它正在寻找的关键字,它只运行一次。我无法让“for循环”正常运行 任何帮助都将不胜感激 Private Sub CommandButton1_C

VBA根据Sheet1+中的唯一列值创建新图纸,并覆盖相邻行信息 Hey all-我正在尝试创建一个脚本,该脚本标识列E中的唯一值(数据从第1行开始),基于这些唯一值创建一个新的工作表(也根据值命名工作表),并在创建的新工作表中提供列a、C、D和H中对应行的信息-

我找到了这个YouTube视频,它显示了这个过程,但不是脚本识别唯一的值,你必须手动输入它正在寻找的关键字,它只运行一次。我无法让“for循环”正常运行

任何帮助都将不胜感激

Private Sub CommandButton1_Click()

J = "Test"
Worksheets.Add().Name = J
Worksheets("Sheet1").Rows(1).Copy
Worksheets(J).Activate
ActiveSheet.Paste
Worksheets("Sheet1").Activate


a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To a
If Worksheets("Sheet1").Cells(i, 5).Value = "XXXX" Then

    Worksheets("Sheet1").Rows(i).Copy
    Worksheets(J).Activate
    b = Worksheets(J).Cells(Rows.Count, 1).End(xlUp).Row
    Worksheets(J).Cells(b + 1, 1).Select
    ActiveSheet.Paste
    Worksheets("Sheet1").Activate

End If
Next

Application.CutCopyMode = False

ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).Select

End Sub
大概是这样的:

Private Sub CommandButton1_Click()

    Dim sht As Worksheet,  c As Range, i As Long
    Set sht = ThisWorkbook.Worksheets("Sheet1")

    For i = 2 To sht.Cells(Rows.Count, 1).End(xlUp).Row

        CopyDestination(sht.Cells(i, 5).Value).Resize(1, 5).Value = _
           Array(sht.Cells(i, 5).Value, sht.Cells(i, 1).Value, _
                 sht.Cells(i, 3).Value, sht.Cells(i, 4).Value, _
                 sht.Cells(i, 8).Value)

    Next

    Application.CutCopyMode = False

End Sub


'Find the next "paste" destination on the appropriate sheet named "v"
'   If sheet doesn't exist, create it
Function CopyDestination(v) As Range
    Dim sht As Worksheet
    On Error Resume Next
    Set sht = ThisWorkbook.Sheets(v)
    On Error GoTo 0
    If sht Is Nothing Then '<< no existing matching sheet
        With ThisWorkbook
            Set sht = .Sheets.Add(after:=.Sheets(.Sheets.Count))
        End With
        sht.Name = v  '<<< assumes "v" is valid as a worksheet name...
    End If
    'find the first empty cell in Col A
    Set CopyDestination = sht.Cells(sht.Rows.Count, 1).End(xlUp).Offset(1, 0)
End Function
Private子命令按钮1\u单击()
尺寸sht作为工作表,c作为范围,i作为长度
Set sht=此工作簿。工作表(“表1”)
对于i=2至短单元格(Rows.Count,1)。结束(xlUp)。行
CopyDestination(短单元格(i,5).Value)。调整大小(1,5)。Value=_
数组(短单元格(i,5).值,短单元格(i,1).值_
短单元格(i,3).值,短单元格(i,4).值_
短单元格(i,8).值)
下一个
Application.CutCopyMode=False
端接头
'在名为“v”的相应工作表上查找下一个“粘贴”目的地'
'如果工作表不存在,请创建它
功能CopyDestination(v)作为范围
将sht变暗为工作表
出错时继续下一步
Set sht=ThisWorkbook.Sheets(v)
错误转到0

如果sht为Nothing,则“请将您的代码(通过在{}代码标记之间插入格式)添加到原始帖子中!”!描述你说“你不能让for循环正常运行”的意思