帮我设计一个vba程序:要求如下:源数据表:Data check - Service Request Detail required fields all(SL).xlsx 源数据表B列=PUMA时 删除 A列包含FW的数据 源数据表B列=ASICS CORPORATION时 删除 R列(Market Segment Name) 包含RS的数据 源数据表B列=TOMS COMMERCE (SHANGHAI) CO.,LTD时 删除 AD列 (Service Type Detail)不为Finished Product的数据【相当于只保留】 源数据表删除AJ列(Service End)不含:“2022”“ 2023”的数据【相当于只保留】 源数据表删除D整列(Reference Number) 在源数据表上这样操作,刷新完直接覆盖掉源数据。
时间: 2024-03-16 18:42:51 浏览: 109
好的,以下是VBA程序的代码:
```
Sub CleanData()
Dim wb As Workbook
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
'打开源数据表
Set wb = Workbooks.Open("Data check - Service Request Detail required fields all(SL).xlsx")
'选择源数据表第一个工作表
Set ws = wb.Sheets(1)
'获取最后一行的行号
lastRow = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
'循环处理每一行数据
For i = lastRow To 2 Step -1
'判断B列是否为PUMA,删除A列包含FW的数据
If ws.Range("B" & i).Value = "PUMA" And InStr(1, ws.Range("A" & i).Value, "FW") > 0 Then
ws.Rows(i).Delete
End If
'判断B列是否为ASICS CORPORATION,删除R列包含RS的数据
If ws.Range("B" & i).Value = "ASICS CORPORATION" And InStr(1, ws.Range("R" & i).Value, "RS") > 0 Then
ws.Rows(i).Delete
End If
'判断B列是否为TOMS COMMERCE (SHANGHAI) CO.,LTD,删除AD列不为Finished Product的数据
If ws.Range("B" & i).Value = "TOMS COMMERCE (SHANGHAI) CO.,LTD" And ws.Range("AD" & i).Value <> "Finished Product" Then
ws.Rows(i).Delete
End If
'删除AJ列不含“2022”“ 2023”的数据
If InStr(1, ws.Range("AJ" & i).Value, "2022") = 0 And InStr(1, ws.Range("AJ" & i).Value, "2023") = 0 Then
ws.Rows(i).Delete
End If
'删除D整列
ws.Columns("D").Delete
Next i
'保存并关闭源数据表
wb.Save
wb.Close
End Sub
```
您可以将此代码复制到Excel的VBA编辑器中并运行。请注意备份源数据表以防止数据丢失。
阅读全文