ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何按要求排课表?

如何按要求排课表?

作者:绿色风 分类: 时间:2022-08-17 浏览:113
楼主
悟空师弟
Q:如何按要求排课表?
如下图:
要求实现:      
    1、每天上午至少有一节语文和数学课。      
    2、语文、数学每天不能多于两节,其它科目每天不能超过1节。      
说明:上午4节,下午两节。

 

A:VBA代码如下:
附件:
模拟排课.rar


  1. Sub pk()
  2.     Range("E2:J6") = ""
  3.     Dim rg As Range
  4.     Dim rng As Range
  5.     Dim rngkg As Range
  6.     Set rngkb = Range("E2:F6")
  7.     For Each rg In Range("A1:A2")
  8.         For rw = 2 To 6
  9.             For x = 1 To 99999999
  10.                 cl = Int(Rnd() * 4 + 5)
  11.                 If Cells(rw, cl) = "" Then
  12.                     Cells(rw, cl) = rg
  13.                     Exit For
  14.                 End If
  15.             Next x
  16.         Next rw
  17.     Next rg
  18.     For Each rg3 In Range("A1:A2")
  19.         For rw2 = 2 To 6
  20.             cl2 = Int(Rnd() * 2 + 9)
  21.             For x2 = 1 To 99999999
  22.                 If Cells(rw2, cl2) = "" Then
  23.                     Cells(rw2, cl2) = rg3
  24.                     Exit For
  25.                 Else
  26.                     Exit For
  27.                 End If
  28.             Next x2
  29.             If Application.CountIf(Range("E2:J6"), rg3) >= rg3.Offset(0, 1) Then
  30.                 Exit For
  31.             End If
  32.         Next rw2
  33.     Next rg3
  34.     For Each rg4 In Range("A3:A11")
  35.         For x = 1 To 99999999
  36.             rw = Int(Rnd() * 5 + 2)
  37.             cl = Int(Rnd() * 6 + 5)
  38.             If Application.CountIf(Range(Cells(rw, 5), Cells(rw, 10)), rg4) < 1 Then
  39.                 If Len(Cells(rw, cl)) = 0 Then
  40.                     Cells(rw, cl) = rg4
  41.                     y = y + 1
  42.                     If y >= rg4.Offset(0, 1) Then
  43.                         Exit For
  44.                     End If
  45.                 End If
  46.             End If
  47.         Next x
  48.         y = 0
  49.     Next rg4
  50. End Sub

效果如下:

 
2楼
微风入林
我抢我快乐
3楼
绿篱
感谢分享  学习啦~~
4楼
hnfgcjh
EXCEL中真可以排课程表啊!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap