【问题标题】:If cell contains specific text then move to a new workbook如果单元格包含特定文本,则移动到新工作簿
【发布时间】:2021-07-03 03:57:49
【问题描述】:

我有一个大型数据集,第一列是变量 ClientNames。某些 ClientNames 中包含“Project”一词,我想使用 VBA 查找并选择其中包含“Project”一词的每个 ClientNames,并将这些客户端的整行移动到一个新工作簿中(一个包含所有客户名称中包含“项目”的客户。我该怎么做?

【问题讨论】:

  • 如果是一次性活动,则使用过滤器,然后复制到新工作簿。
  • 欢迎来到stackoverflow :) 我想你可能误解了stackoverflow 的运作方式。您可能想查看How do I ask a good question? 请发布您迄今为止尝试过的内容。在发布 1. 时请记住这些内容。您期待什么? 2. 什么不工作?如果适用,请包含错误消息,我们将从那里获取它:)
  • @SiddharthRout 对不起,我是新来的!下次我会阅读并正确构建我的问题:)

标签: excel vba if-statement find


【解决方案1】:

您可以通过使用下面的 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

【讨论】:

  • 啊,现在我明白你的意思了 ^^ 我的错,你是对的,你只剩下一个空行,只是数据被删除了。 • 我将删除我的cmets(和这个)以整理答案并删除令人困惑的东西!随意做同样的事情。
  • 谢谢,这段代码正是我想要的,但是当我运行 Ranga 时,出现一条错误消息说“你不能以这种方式重新排列表格中的单元格,因为它可能会影响其他表格细胞以一种意想不到的方式。”你知道这是为什么吗?当我按下调试时,它会突出显示插入剪切行然后向下移动一行的代码行。
  • @A_Pearson 那是因为您复制了整行并且您在工作表中已格式化表格(列表对象)。删除格式化表格或将它们作为列表对象正确处理like I desrcibed here
  • 非常感谢! :) @Pᴇʜ
【解决方案2】:

您可以使用InStr 函数来了解“项目”是否在您的单元格中。 然后您可以使用entirerow 选择您的行,然后使用copy 选择目标工作表,最后使用delete 源工作表中的行。
注意删除行后需要更新的行索引

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多