如何将excel中工作薄内所有sheet中删除多个指定内容所在的行?

如何将excel中工作薄内所有sheet中删除多个指定内容所在的行?需要vba代码或者其他的方法

img

具体的指定内容是什么,需要你附上预期结果

excel自带筛选,在内容筛选里面输入规则,筛选出来后Control+A全部选中删除就行了

解决方法

Python中可以用openpyxl来实现这个效果,

  • 代码如下:(采纳后可以打包成exe直接运行)
import time
import openpyxl


def delete_rows_with_values(workbook_path, values_to_delete):
    wb = openpyxl.load_workbook(workbook_path)

    for sheet_name in wb.sheetnames:
        sheet = wb[sheet_name]
        rows_to_delete = []

        for row in sheet.iter_rows():
            for cell in row:
                if cell.value in values_to_delete:
                    rows_to_delete.append(cell.row)
                    break

        for row_idx in sorted(rows_to_delete, reverse=True):
            sheet.delete_rows(row_idx)

    wb.save(workbook_path)


def main():
    print(f"**************************************")
    excel_file_path = 'demo.xlsx'
    print(f"你要处理的文件为: {excel_file_path}")
    values_to_delete = ['Value1', 'Value2', 'Value3']  # 替换为您要删除的内容
    delete_str = "\n".join(values_to_delete)
    print(f"你要删除的内容为: {delete_str}")
    print(f"开始删除")
    delete_rows_with_values(excel_file_path, values_to_delete)
    print(f"删除完毕")
    time.sleep(20)
    print(f"20秒后自动关闭")
    print(f"**************************************")


if __name__ == '__main__':
    main()

如有问题及时沟通
如有帮助欢迎采纳

引用chatgpt内容作答:
你可以使用VBA(Visual Basic for Applications)编写一个宏来实现在Excel工作簿的所有工作表中删除指定内容所在的行。下面是一个示例VBA代码,可以帮助你实现这个目标:

Sub DeleteRowsWithSpecifiedContent()
    Dim ws As Worksheet
    Dim searchRange As Range
    Dim deleteRange As Range
    Dim searchTerm1 As String
    Dim searchTerm2 As String
    
    ' 设置需要查找并删除的内容
    searchTerm1 = "指定内容1"
    searchTerm2 = "指定内容2"
    
    ' 遍历所有工作表
    For Each ws In ThisWorkbook.Worksheets
        ' 设置查找范围为工作表的数据区域(假设数据从第2行开始,你可以根据实际情况进行调整)
        Set searchRange = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, 1).End(xlUp).Row)
        
        ' 循环遍历查找范围内的每一行
        For Each cell In searchRange
            ' 判断单元格内容是否包含指定内容
            If InStr(1, cell.Value, searchTerm1, vbTextCompare) > 0 Or InStr(1, cell.Value, searchTerm2, vbTextCompare) > 0 Then
                ' 将匹配的行添加到要删除的范围
                If deleteRange Is Nothing Then
                    Set deleteRange = cell.EntireRow
                Else
                    Set deleteRange = Union(deleteRange, cell.EntireRow)
                End If
            End If
        Next cell
        
        ' 删除收集到的要删除的行
        If Not deleteRange Is Nothing Then
            deleteRange.Delete
        End If
        
        ' 清空范围以便下一次循环
        Set deleteRange = Nothing
    Next ws
End Sub

这只是一个示例代码,你需要根据你的实际情况进行适当的修改。在代码中,你需要设置要查找并删除的指定内容,并调整数据的起始行号(假设从第2行开始)。另外,请务必在使用之前备份你的数据,以防出现意外情况。

【以下回答由 GPT 生成】

我可以为您提供一个解决方案来删除Excel工作薄中所有工作表中包含指定内容的多个行。下面是一种可能的方法来实现这个需求:

  1. 首先,您需要安装openpyxl库来处理Excel文件。可以使用以下命令来安装它:
pip install openpyxl
  1. 接下来,您需要导入openpyxl库,并打开Excel文件。可以使用以下代码:
from openpyxl import load_workbook

# 打开Excel文件
workbook = load_workbook('your_file.xlsx')
  1. 然后,您需要遍历工作薄中的每个工作表,并定位到包含指定内容的行。可以使用以下代码:
# 遍历工作薄中的每个工作表
for sheet in workbook.sheetnames:
    # 定位到当前工作表
    worksheet = workbook[sheet]

    # 遍历工作表中的每一行
    for row in worksheet.iter_rows():
        # 判断每一行是否包含指定内容,如果是则删除该行
        if '指定内容' in [cell.value for cell in row]:
            worksheet.delete_rows(row[0].row, amount=1)  # 删除指定行
  1. 最后,您需要保存更改后的Excel文件。可以使用以下代码:
# 保存更改后的Excel文件
workbook.save('your_file.xlsx')

这就是使用Python删除Excel工作薄中所有工作表中包含指定内容的多个行的解决方案。请注意,此解决方案基于openpyxl库,因此您需要确保已正确安装此库并将代码中的文件路径更改为实际的Excel文件路径。如果需要,您还可以根据实际需要进行修改和优化。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^