第一次自学VBA

希望的效果如图所示

Sub CopyClassAvgCell() Dim a As Range Dim i As Integer Dim cell As String Dim nameCell As String Dim schoolAvgCell As String Dim classAvgCell As String Dim mergeCell As String Dim totalAvgCell As String Dim dstCell As String Dim j As Integer ''''''''''''''''''''''''从Sheet1获取关键数据到Sheet2 j = 1 For i = 7 To 511 Step 8 Worksheets("Sheet1").Activate cell = "Q" + CStr(i) nameCell = "C" + CStr(i - 2) Range(cell).Select Selection.Copy Worksheets("Sheet2").Activate dstCell = "C" + CStr(j) Range(dstCell).PasteSpecial xlPasteValues dstCell = "D" + CStr(j) schoolAvgCell = "R" + CStr(i) Range(dstCell).Select ActiveCell.FormulaR1C1 = Worksheets("Sheet1").Range(schoolAvgCell).Value dstCell = "A" + CStr(j) Range(dstCell).Select ActiveCell.FormulaR1C1 = CStr(j) dstCell = "B" + CStr(j) Range(dstCell).Select ActiveCell.FormulaR1C1 = Worksheets("Sheet1").Range(nameCell).Value j = j + 1 Next i '''''''''''''''''''''''' 以C为主键排序Sheet2中的数据 Worksheets("Sheet2").Range("C1").Sort _ Key1:=Worksheets("Sheet2").Columns("C"), _ Header:=xlGuess '''''''''''''''''''''''' 将Sheet2的数据重新插回到Sheet1 j = 1 For i = 7 To 511 Step 8 Worksheets("Sheet1").Activate mergeCell = "C" + CStr(i) + ":R" + CStr(i) Range(mergeCell).Select Selection.Merge dstCell = "C" + CStr(i) totalAvgCell = "A" + CStr(j) classAvgCell = "C" + CStr(j) schoolAvgCell = "D" + CStr(j) Range(dstCell).Value = "平均分1" + CStr(Worksheets("Sheet2").Range(classAvgCell).Value) + " " + _ "平均分2" + CStr(Worksheets("Sheet2").Range(schoolAvgCell).Value) + " " + _ "平均分3" + CStr(Worksheets("Sheet2").Range(totalAvgCell).Value) j = j + 1 Next i End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值