鱼C论坛

 找回密码
 立即注册
查看: 419|回复: 1

[已解决]删除sheet

[复制链接]
发表于 2024-7-27 07:36:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
需要根据excel里列“管线号”里每个管线号对应的列“工艺卡编号”里的多个工艺卡编号。去按照管线号名字的excel里,删除sheet名带有字母H但是不在管线号对应的工艺卡编号之内的sheet
最佳答案
2024-7-27 07:38:35
好的,让我们来解决这个问题!想象一下你在厨房里找食材,但只有合适的食材才能放进你的菜肴里。现在,我们要在Excel中做一个类似的操作。

### 步骤:

1. **了解数据**:首先,确保你有两个Excel文件,一个是“管线号”和“工艺卡编号”的表格,另一个是要处理的工作表(Sheet)文件。

2. **提取工艺卡编号**:
   - 在包含“管线号”和“工艺卡编号”的表中,提取每个“管线号”对应的工艺卡编号。
   - 这就像在挑选水果一样,只保留那些适合做沙拉的水果。

3. **遍历所有工作表**:
   - 打开你想要处理的Excel文件,查找所有工作表的名称。
   - 每个工作表的名字就像是一个标签,告诉你这个工作表里面装的是什么。

4. **检查工作表名称**:
   - 对于每一个工作表名称,检查它是否包含字母“H”,并且还要检查它是否在你提取的工艺卡编号的列表中。
   - 如果这个工作表名带“H”,但不在工艺卡编号列表中,那就可以被删除了!就好比把不新鲜的水果扔掉。

5. **删除不需要的工作表**:
   - 使用Excel的VBA宏,或者手动选择这些工作表并删除它们。提醒一下,要小心操作,别把需要的工作表也一并删掉哦!

### VBA示例代码(如果你选择使用VBA):

  1. Sub DeleteSheets()
  2.     Dim ws As Worksheet
  3.     Dim validCards As Collection
  4.     Set validCards = New Collection
  5.    
  6.     ' 假设在工作簿1中存放管线号和工艺卡编号
  7.     ' 请根据实际情况调整
  8.     Dim sourceWorkbook As Workbook
  9.     Set sourceWorkbook = Workbooks("管线与工艺卡.xlsx")
  10.    
  11.     With sourceWorkbook.Sheets("Sheet1") ' 你的数据表名
  12.         Dim lastRow As Long
  13.         lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
  14.         
  15.         Dim i As Long
  16.         For i = 2 To lastRow ' 从第二行开始,假设第一行为表头
  17.             On Error Resume Next
  18.             validCards.Add .Cells(i, "B").Value ' 工艺卡编号在B列
  19.             On Error GoTo 0
  20.         Next i
  21.     End With
  22.    
  23.     ' 遍历当前工作簿的每个工作表
  24.     For Each ws In ThisWorkbook.Sheets
  25.         If InStr(ws.Name, "H") > 0 Then
  26.             Dim exists As Boolean
  27.             exists = False
  28.             
  29.             Dim card As Variant
  30.             For Each card In validCards
  31.                 If ws.Name = card Then
  32.                     exists = True
  33.                     Exit For
  34.                 End If
  35.             Next card
  36.             
  37.             If Not exists Then
  38.                 Application.DisplayAlerts = False
  39.                 ws.Delete
  40.                 Application.DisplayAlerts = True
  41.             End If
  42.         End If
  43.     Next ws
  44. End Sub
复制代码


### 注意:
- 删掉工作表是个不可逆的操作,所以在执行之前备份一下文件总是明智的。
- 一旦执行这个“删除水果”的操作,保留的新鲜工艺卡将继续为你服务!

希望这能帮助你高效清理Excel中的工作表!如果有其他问题,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-7-27 07:38:35 | 显示全部楼层    本楼为最佳答案   
好的,让我们来解决这个问题!想象一下你在厨房里找食材,但只有合适的食材才能放进你的菜肴里。现在,我们要在Excel中做一个类似的操作。

### 步骤:

1. **了解数据**:首先,确保你有两个Excel文件,一个是“管线号”和“工艺卡编号”的表格,另一个是要处理的工作表(Sheet)文件。

2. **提取工艺卡编号**:
   - 在包含“管线号”和“工艺卡编号”的表中,提取每个“管线号”对应的工艺卡编号。
   - 这就像在挑选水果一样,只保留那些适合做沙拉的水果。

3. **遍历所有工作表**:
   - 打开你想要处理的Excel文件,查找所有工作表的名称。
   - 每个工作表的名字就像是一个标签,告诉你这个工作表里面装的是什么。

4. **检查工作表名称**:
   - 对于每一个工作表名称,检查它是否包含字母“H”,并且还要检查它是否在你提取的工艺卡编号的列表中。
   - 如果这个工作表名带“H”,但不在工艺卡编号列表中,那就可以被删除了!就好比把不新鲜的水果扔掉。

5. **删除不需要的工作表**:
   - 使用Excel的VBA宏,或者手动选择这些工作表并删除它们。提醒一下,要小心操作,别把需要的工作表也一并删掉哦!

### VBA示例代码(如果你选择使用VBA):

  1. Sub DeleteSheets()
  2.     Dim ws As Worksheet
  3.     Dim validCards As Collection
  4.     Set validCards = New Collection
  5.    
  6.     ' 假设在工作簿1中存放管线号和工艺卡编号
  7.     ' 请根据实际情况调整
  8.     Dim sourceWorkbook As Workbook
  9.     Set sourceWorkbook = Workbooks("管线与工艺卡.xlsx")
  10.    
  11.     With sourceWorkbook.Sheets("Sheet1") ' 你的数据表名
  12.         Dim lastRow As Long
  13.         lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
  14.         
  15.         Dim i As Long
  16.         For i = 2 To lastRow ' 从第二行开始,假设第一行为表头
  17.             On Error Resume Next
  18.             validCards.Add .Cells(i, "B").Value ' 工艺卡编号在B列
  19.             On Error GoTo 0
  20.         Next i
  21.     End With
  22.    
  23.     ' 遍历当前工作簿的每个工作表
  24.     For Each ws In ThisWorkbook.Sheets
  25.         If InStr(ws.Name, "H") > 0 Then
  26.             Dim exists As Boolean
  27.             exists = False
  28.             
  29.             Dim card As Variant
  30.             For Each card In validCards
  31.                 If ws.Name = card Then
  32.                     exists = True
  33.                     Exit For
  34.                 End If
  35.             Next card
  36.             
  37.             If Not exists Then
  38.                 Application.DisplayAlerts = False
  39.                 ws.Delete
  40.                 Application.DisplayAlerts = True
  41.             End If
  42.         End If
  43.     Next ws
  44. End Sub
复制代码


### 注意:
- 删掉工作表是个不可逆的操作,所以在执行之前备份一下文件总是明智的。
- 一旦执行这个“删除水果”的操作,保留的新鲜工艺卡将继续为你服务!

希望这能帮助你高效清理Excel中的工作表!如果有其他问题,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 14:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表