Excel 如果单元格包含特定文本,则移动到新工作簿

Excel 如果单元格包含特定文本,则移动到新工作簿,excel,vba,if-statement,find,Excel,Vba,If Statement,Find,我有一个很大的数据集,第一列是变量ClientNames。有些客户端名称中有“Project”一词,我想使用VBA查找并选择每个包含“Project”一词的客户端名称,并将这些客户端的整行移到一个新工作簿中(一个工作簿包含所有包含“Project”的客户端)您可以使用下面的VBA代码来实现这一点,下面的代码在第一列中搜索文本“project”,然后将整行移到名为project的新工作簿中 Option Explicit Sub project() Dim lastrow As Long Di

我有一个很大的数据集,第一列是变量ClientNames。有些客户端名称中有“Project”一词,我想使用VBA查找并选择每个包含“Project”一词的客户端名称,并将这些客户端的整行移到一个新工作簿中(一个工作簿包含所有包含“Project”的客户端)您可以使用下面的VBA代码来实现这一点,下面的代码在第一列中搜索文本“project”,然后将整行移到名为project的新工作簿中

Option Explicit

Sub project()

Dim lastrow As Long
Dim count As Long
Dim sht As Worksheet
Set sht = ActiveSheet

Dim dst As Workbook
Set dst = Workbooks.Add
dst.SaveAs Filename:="Project"
dst.Sheets.Add.Name = "Project"
count = 1

sht.Activate
lastrow = sht.Cells(Rows.count, 1).End(xlUp).Row
Dim i As Long
    For i = 1 To lastrow
    
        If InStr(1, sht.Cells(i, 1).Value, "Project", vbTextCompare) > 0 Then
        sht.Rows(i).Cut
        dst.Sheets("Project").Rows(count).Insert Shift:=xlDown
        sht.Rows(i).Delete
        count = count + 1
        i = i - 1
        End If
    
    Next i
 End Sub
您可以使用函数来知道“项目”是否在您的单元格中。 然后,您可以使用选择行,然后将其发送到目标工作表,最后是源工作表中的行。

请小心删除行后需要更新的行索引

如果是一次性活动,请使用筛选器,然后复制到新工作簿。欢迎使用stackoverflow:)我想您可能误解了stackoverflow的操作方式。您可能想看看,请张贴您迄今为止尝试过的内容。在发布1时请记住这些。你在期待什么?2.什么不起作用?如果适用,包括错误消息,我们将从那里开始:)@SiddharthRout抱歉,是的,我是新来的!下次我会仔细阅读并正确地构造我的问题:)啊,现在我明白你的意思了^^我的错你是对的,你只剩下一行空行,只是数据被删掉了。•我将删除我的评论(和这一条),以整理答案并删除令人困惑的内容!也可以这样做。谢谢,这段代码正是我想要的,但是当我运行它时,会出现一条错误消息说“您不能以这种方式重新排列表中的单元格,因为它可能会以意外的方式影响其他表单元格。”您知道这是为什么吗?当我按debug键时,它会突出显示插入剪切行然后下移一行的代码行。@a_Pearson这是因为您复制了整行,并且在工作表中设置了表格(列表对象)的格式。要么删除格式化的表,要么将其作为列表对象正确处理。Thanks太多了!:)@Pᴇʜ