1、打开excel表后打开文件夹中的某个工作簿,然后排序该工作簿某字段为升序,然后摘取指定字段的值存放在表1中 2、将表1的所有值追加到表2中 3、将表3中的重复值根据另外字段中最小值,删除重复值得整行数据 4、表4中根据某单元格的值筛选表3中的全部内容放在表4指定单元格中 完成以上某一项指令后要刷新屏幕的vba代码
时间: 2024-03-23 13:36:37 浏览: 210
以下是VBA代码,可以实现你提到的四个任务:
```
Sub ProcessExcel()
Dim wb As Workbook
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim ws4 As Worksheet
Dim lastRow As Long
Dim lastRow1 As Long
Dim lastRow2 As Long
Dim lastRow3 As Long
Dim lastRow4 As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
Dim temp As Variant
' 打开文件夹中的某个工作簿
Set wb = Workbooks.Open("C:\folder\workbook.xlsx")
Set ws = wb.Worksheets("Sheet1")
' 排序某字段为升序
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ws.Sort.SetRange Range("A1:D100") ' 修改为你需要排序的区域
ws.Sort.Header = xlYes
ws.Sort.MatchCase = False
ws.Sort.Orientation = xlTopToBottom
ws.Sort.SortMethod = xlPinYin
ws.Sort.Apply
' 摘取指定字段的值存放在表1中
Set ws1 = wb.Worksheets("Sheet2") ' 修改为你需要操作的工作表
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row ' 修改为你需要摘取的区域
j = 1 ' 修改为你需要摘取的列数
For i = 2 To lastRow
temp = ws.Cells(i, j).Value
ws1.Cells(i - 1, 1).Value = temp
Next i
' 将表1的所有值追加到表2中
Set ws2 = wb.Worksheets("Sheet3") ' 修改为你需要操作的工作表
lastRow1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row
lastRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow1
temp = ws1.Cells(i, 1).Value
ws2.Cells(lastRow2 + i, 1).Value = temp
Next i
' 将表3中的重复值根据另外字段中最小值,删除重复值得整行数据
Set ws3 = wb.Worksheets("Sheet4") ' 修改为你需要操作的工作表
lastRow3 = ws3.Cells(Rows.Count, 1).End(xlUp).Row
ws3.Range("A1:D" & lastRow3).RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlYes ' 修改为你需要删除重复行的区域
' 将表4中根据某单元格的值筛选表3中的全部内容放在表4指定单元格中
Set ws4 = wb.Worksheets("Sheet5") ' 修改为你需要操作的工作表
lastRow4 = ws4.Cells(Rows.Count, 1).End(xlUp).Row
ws3.Range("A1:D" & lastRow3).AutoFilter Field:=1, Criteria1:=ws4.Range("A1").Value ' 修改为你需要筛选的列数和条件单元格
k = 2 ' 修改为你需要写入结果的起始行数
For l = 2 To lastRow3
If ws3.Cells(l, 1).EntireRow.Hidden = False Then
ws4.Cells(k, 1).Value = ws3.Cells(l, 1).Value
ws4.Cells(k, 2).Value = ws3.Cells(l, 2).Value
ws4.Cells(k, 3).Value = ws3.Cells(l, 3).Value
ws4.Cells(k, 4).Value = ws3.Cells(l, 4).Value
k = k + 1
End If
Next l
' 刷新屏幕
Application.ScreenUpdating = True
End Sub
```
请根据你的实际情况修改代码中的文件路径、工作表名称、区域和单元格等参数。
阅读全文