使用过滤器拆分工作簿并在列名中创建新文件

使用过滤器拆分工作簿并在列名中创建新文件

假设我有工作簿(Report.xlsx),并且在该工作簿中我有不同的工作表。在每个工作表中我都有一个列名 B_Code。使用 B_Code 中的过滤器,我想要一个包含每个工作表的单独工作簿。

正如在图片 1 中您可以看到 Sheet 1 有 B_Code。

同样,在 Sheet 2 中我也有 B_Code。

现在我想要同一工作簿中工作表 1 和工作表 2 中 001 即 Ram 的数据作为文件名 001,以及另一个工作簿中工作表 1 和工作表 2 中 002 即 Hari 的数据作为文件名 002,依此类推。

有人能帮助我使用 VBA 解决这个问题吗?

答案1

rngCell在开始删除之前,请保存文件的副本。然后,您可以使用 VBA 代码,当单元格 ( ) 的值不同于 001 或 B_Code 或为空白时,删除一行。

        If rngCell.Value <> "001" _
            And rngCell.Value <> "B_Code" _
            And rngCell.Value <> "" _
            Then
                rngCell.EntireRow.Delete
        End If

将该代码放入For循环中以检查 A 列中的所有单元格。由于您要删除行,因此从最后一行开始循环,然后使用 向上移动Step -1。查找最后一行 ( ) 的代码lngLastRowNumber的解释如下查找范围内最后使用的单元格

    lngLastRowNumber = Cells(Rows.Count, "A").End(xlUp).row
    For lngRowNumber = lngLastRowNumber To 1 Step -1
        Set rngCell = Columns("A").Rows(lngRowNumber)
        If rngCell.Value <> "001" _
            And rngCell.Value <> "B_Code" _
            And rngCell.Value <> "" _
            Then
                rngCell.EntireRow.Delete
        End If
    Next lngRowNumber

要删除每个工作表上的行,请将循环放在另一个For Each工作表循环内。

发布您在编写和测试代码时遇到的任何问题。

相关内容