您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > 经验技巧 > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

Excel中的"宏"的应用
2001-05-26· ·蒋峰 ··yesky

上一页  1 2  


  现将各个宏的代码列举如下:

  ⑴分班

  Sub 分班()


 Const studentno = 191 '学生人数
 Const zdno = 12 '字段数
 Dim zd$(zdno) '定义为12个字段的数组
 Dim a(studentno, zdno), stu(60, zdno)
 Dim nam$(studentno), bjname$(60) '定义一个存放全校学生名字及各班学生名字的数组
 Dim bj(studentno) '定义存放班级的一个数组
 '理科班工作表
 Sheets("高三理").Select
 For i = 2 To studentno
  bj(i) = ActiveSheet.Cells(i, 1)
  nam$(i) = ActiveSheet.Cells(i, 2)
  For j = 3 To zdno
   a(i, j) = ActiveSheet.Cells(i, j)
  Next j
 Next i
 '存放字段到数组中。
 For i = 1 To zdno
  zd$(i) = ActiveSheet.Cells(1, i)
 Next i
 '先建立各个班级的工作表
 Sheets("高三理").Select
 Sheets("高三理").Copy After:=Sheets("分数段")
 Sheets("高三理 (2)").Select
 Sheets("高三理 (2)").Name = "33"
 For i = 2 To studentno
  For j = 1 To zdno
   ActiveSheet.Cells(i, j) = Space$(1)
  Next j
 Next i
 Range("a1").Select
 For i = 1 To zdno
  ActiveSheet.Cells(1, i) = zd$(i)
 Next i
 '34到36班工作表的建立
 For i = 34 To 36
  x$ = Mid$(Str(33), 2)
  Sheets(x$).Select
  Sheets(x$).Copy After:=Sheets("分数段")
  Sheets(x$ + " (2)").Select
  Sheets(x$ + " (2)").Name = Mid$(Str(i), 2)
 Next i
 '具体分班。
 For k = 33 To 36
  bjrs = 0
  x$ = Mid$(Str(k), 2)
  no = k Mod 10
  Sheets(x$).Select
  For i = 2 To studentno
   If bj(i) = no Then
    bjrs = bjrs + 1
    bjname$(bjrs) = nam$(i)
    For j = 3 To zdno
     stu(bjrs, j) = a(i, j)
    Next j
   End If
  Next i
  For i = 2 To bjrs
   ActiveSheet.Cells(i, 1) = no
   ActiveSheet.Cells(i, 2) = bjname$(i)
   For j = 3 To zdno
    ActiveSheet.Cells(i, j) = stu(i, j)
   Next j
  Next i
 Next k
End Sub



  ⑵总分


 Const studentno = 190
 Const xknum = 6
 Const zdnum = 12
 Sheets("高三理").Select
 For i = 2 To studentno + 1
  Sum = 0
  For j = 1 To xknum
   Sum = Sum + ActiveSheet.Cells(i, j + 3)
  Next j
  ActiveSheet.Cells(i, zdnum-1) = Sum
 Next i
End Sub


  ⑶平均分


Sub 平均分()
 Const studentno = 190
 Const xknum = 6
 Dim fs(studentno, xknum), pjf3(4, 6), bjrs(4), qxpjf(6)
 Dim bj(studentno)
 Sheets("高三理").Select
 '以下程序段用于求全校平均分
 For i = 1 To studentno
  bj(i) = ActiveSheet.Cells(i + 1, 1)
  For j = 1 To xknum
   fs(i, j) = ActiveSheet.Cells(i + 1, j + 3)
  Next j
 Next i
 For i = 1 To xknum
  Sum = 0
  For j = 1 To studentno
   Sum = Sum + fs(j, i)
  Next j
  qxpjf(i) = Sum / (j - 1)
 Next i
 '以下程序段用于求各班平均分
 For j = 1 To 4
  For i = 1 To studentno
   If bj(i) = j + 2 Then
    bjrs(j) = bjrs(j) + 1
    For k = 1 To xknum
     pjf3(j, k) = pjf3(j, k) + fs(i, k)
    Next k
   End If
  Next i
 Next j
 For j = 1 To 4
  For i = 1 To 6
   pjf3(j, i) = pjf3(j, i) / bjrs(j)
  Next i
 Next j
 '写入各班各科平均分
 Sheets("平均分").Select
 For i = 1 To 4
  For j = 1 To 6
   ActiveSheet.Cells(i + 2, j + 1) = pjf3(i, j)
  Next j
 Next i
 '写入全校各科平均分
 i = 7
 For j = 1 To 6
  ActiveSheet.Cells(i, j + 1) = qxpjf(j)
 Next j
End Sub


⑷分数段




Sub 分数段()
 Const max = 600
 Const min = 390
 Const studentno = 190
 Const bjnum = 4
 Const fsdnum = 22
 Dim bjfsd(bjnum, fsdnum), zf(studentno, 2)
 Sheets("高三理").Select
 For i = 1 To studentno
  zf(i, 1) = ActiveSheet.Cells(i + 1, 1) '存放班级
  zf(i, 2) = ActiveSheet.Cells(i + 1, 11) '存放总分
 Next i


 For i = 1 To studentno
  For j = 1 To 4 '3---6班共4个班级
   If zf(i, 1) = j + 2 Then
    For k = max To min Step -10
     low = Int((max + 10 - k) / 10)
     If zf(i, 2) > k Then bjfsd(j, low) = bjfsd(j, low) + 1
    Next k
   End If
  Next j
 Next i
 Sheets("sheet3").Select
 For i = 3 To 6
  For k = 1 To fsdnum
   ActiveSheet.Cells(i, k + 1) = bjfsd(i - 2, k)
  Next k
 Next i
 Range("M3:W6").Select
 Selection.Cut
 ActiveWindow.LargeScroll ToRight:=-1
 Range("B8").Select
 ActiveSheet.Paste
End Sub



  ⑸ 删除



Sub 删除()
  Sheets("33").Select
  ActiveWindow.SelectedSheets.Delete
  Sheets("34").Select
  ActiveWindow.SelectedSheets.Delete
  Sheets("35").Select
  ActiveWindow.SelectedSheets.Delete
  Sheets("36").Select
  ActiveWindow.SelectedSheets.Delete
End Sub


⑹以下是本程序的界面及各个宏运行的结果












上一页  1 2  

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 修复Excel文件数据解决一法
 在JavaScript程序中整合Java函数
 ASP.NET发送ICQ信息DIY
 C#进阶教程(一)
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!