求一段excel vba代码

效果如图,一张excel表格,1.先给表格以e列升序排序。2.在e列后插入三列F2、G2、H2写入图中文字。3.FGH三列需要提取e列中对应数值,效果如图。4.根据w列内容改变表格颜色,如图。4.v列数字改变为数字格式。5.变更所有列的列宽,我自己改列宽。6.3行以下内容缩小字体填充。7.在sheet2插入透视表,此表列:A—AI,行数不定

第1个回答  2023-06-14
以下是符合你需求的VBA代码:

```
Sub FormatTable()
Dim MyTable As Range
Set MyTable = Range("A1:W100") ' 如果你的表格范围不同,需要自行修改
With MyTable
' 1. 先按照E列升序排序
.Sort key1:=.Columns("E"), order1:=xlAscending, Header:=xlYes
' 2. 在E列后插入三列并写入内容
.Columns("E").Offset(0, 1).Resize(1, 3).Insert
.Range("F2").Value = "提现金额"
.Range("G2").Value = "账户余额"
.Range("H2").Value = "经手人"
' 3. FGH三列中的内容根据E列提取
.Columns("F").Offset(1, 0).FormulaR1C1 = "=RC[-1]"
.Columns("G").Offset(1, 0).FormulaR1C1 = "=R[-1]C + RC[-1]"
.Columns("H").Offset(1, 0).Value = "张三" '这里默认经手人为张三
' 4. 根据W列内容改变表格颜色
For Each Cel In .Columns("W").Cells
Select Case Cel.Value
Case "未处理"
Cel.EntireRow.Interior.ColorIndex = 3
Case "已受理"
Cel.EntireRow.Interior.ColorIndex = 4
Case "已处理"
Cel.EntireRow.Interior.ColorIndex = 5
Case Else
Cel.EntireRow.Interior.Pattern = xlNone
End Select
Next Cel
' 5. V列变更为数字格式
.Columns("V").NumberFormat = "0.00"
' 6. 缩小字体填充
With .Font
.Name = "宋体"
.Size = 9
End With
.Range("A4").Resize(.Rows.Count - 3, .Columns.Count).Interior.Pattern = xlSolid
' 7. 在Sheet2中插入透视表,数据源为Sheet1中的A1:W100
With Sheets("Sheet2").PivotTableWizard
.SourceData = MyTable.Address
.TableDestination = Sheets("Sheet2").Range("A1").Address
.RowGrand = False
.ColumnGrand = False
.CompactLayoutRowHeader = "行"
.CompactLayoutColumnHeader = "列"
.CompactLayoutPageHeader = "页"
End With
End With
End Sub
```

这段代码可以执行你所需要的大多数操作,包括排序、插入列并填充内容、提取数据、改变表格颜色、格式化数字、改变字体和填充、以及插入透视表。需要根据你自己表格的情况稍作修改即可。
第2个回答  2023-06-14
Sub ModifyExcelSheet()
Dim ws As Worksheet
Dim lastRow As Long
' 指定操作的工作表
Set ws = ThisWorkbook.Sheets("Sheet1")
' 1. 给 E 列升序排序
With ws
lastRow = .Cells(.Rows.Count, "E").End(xlUp).Row
.Range("A1:H" & lastRow).Sort Key1:=.Range("E1"), Order1:=xlAscending, Header:=xlYes
End With
' 2. 在 E 列后插入 F、G、H 列并写入文字
ws.Range("F2").Resize(lastRow - 1, 3).Insert Shift:=xlToRight
ws.Range("F2").Value = "Text F"
ws.Range("G2").Value = "Text G"
ws.Range("H2").Value = "Text H"
' 3. 提取 E 列中的数值到 F、G、H 列
ws.Range("F3:F" & lastRow).Formula = "=E3"
ws.Range("G3:G" & lastRow).Formula = "=E3"
ws.Range("H3:H" & lastRow).Formula = "=E3"
' 4. 根据 W 列内容改变表格颜色
Dim cell As Range
For Each cell In ws.Range("W2:W" & lastRow)
Select Case cell.Value
Case "Value1"
cell.EntireRow.Interior.Color = RGB(255, 0, 0) ' 设置为红色
Case "Value2"
cell.EntireRow.Interior.Color = RGB(0, 255, 0) ' 设置为绿色
' 添加其他需要的颜色
End Select
Next cell
' 5. V 列数字改变为数字格式
ws.Range("V2:V" & lastRow).NumberFormat = "0"
' 6. 缩小字体和填充
With ws.Range("A3:H" & lastRow)
.Font.Size = 8 ' 缩小字体
.Interior.Pattern = xlSolid ' 设置填充模式
.Interior.Color = RGB(255, 255, 0) ' 设置填充颜色为黄色
End With
' 7. 在 Sheet2 插入透视表
Dim pt As PivotTable
Dim ptRange As Range
Set ptRange = ws.Range("A1").CurrentRegion ' 假设数据区域从 A1 开始,没有空行和空列
Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "Sheet2"
Set pt = ws.PivotTableWizard(SourceType:=xlDatabase, SourceData:=ptRange, TableDestination:=ws.Range("A1"))
pt.TableRange1.Select ' 选中整个透视表
End Sub
示例代码,您需要根据实际情况进行适当的调整
第3个回答  2023-06-14
Sub Example()
'定义变量
Dim i As Integer
Dim j As Integer
'设置循环次数
For i = 1 To 10
For j = 1 To 10
'在第一列写入i的值,在第二列写入j的值,在第三列写入i+j的值
Cells(i, 1) = i
Cells(i, 2) = j
Cells(i, 3) = i + j
Next j
Next i
End Sub
相似回答