以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]分班的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=191377) |
-- 作者:jjjeyes -- 发布时间:2024/4/13 13:53:00 -- [求助]分班的问题 我有一个表格"测试"中A列为人员姓名,人数为p,如下图: 请问这个循环怎么写 Dim Lst As New List(Of String) \'设定一个班级名集合 Dim p As Integer = Lst.Count \'设定班级总数量的变量 Dim n As Integer = Tables("测试").Rows.Count \'总人数 Dim bs(p) As Integer\'设定一个班级人数数组 For g As Integer = 0 To p - 1 MessageBox.Show ( Lst(g) & "班人数:" & bs(g)) Next For k As Integer = 0 To n - 1 Dim r As Row = Tables("测试").Rows(k) r("B") = Lst(bs(g)) Next |
-- 作者:有点蓝 -- 发布时间:2024/4/13 15:05:00 -- 把集合和数组的具体值发上来看看 Dim Lst As New List(Of String) \'设定一个班级名集合 Dim bs(p) As Integer\'设定一个班级人数数组
|
-- 作者:jjjeyes -- 发布时间:2024/4/13 15:18:00 -- Dim Lst As New List(Of String) \'设定一个班级名集合 lst(0)的值是“班级1” lst(1)的值是“班级2” lst(2)的值是“班级3” lst(3)的值是“班级4” Dim bs(p) As Integer \'设定一个班级人数数组 bs(0) = 8 是指“班级1”有8人 bs(1) = 10 是指“班级2”有10人 bs(2) = 7 是指“班级3”有7人 bs(3) = 5 是指“班级1”有5人 |
-- 作者:有点蓝 -- 发布时间:2024/4/13 15:52:00 -- Dim t As Table = Tables("测试") t.StopRedraw For k As Integer = 0 To bs.length - 1 t.filter = "B is null" For i As Integer = 0 To bs(k) - 1 t.rows(i)("B") = Lst(k) Next Next t.Filter = "" t.ResumeRedraw
[此贴子已经被作者于2024/4/13 17:15:39编辑过]
|
-- 作者:jjjeyes -- 发布时间:2024/4/13 16:17:00 -- 看懂了,一句t.filter = "B is null" 好销魂 |
-- 作者:有点蓝 -- 发布时间:2024/4/13 16:37:00 -- 很多时候编程逻辑就是头脑风暴。想到每次都只需把班级为空的行,取前面n行赋值.... |
-- 作者:jjjeyes -- 发布时间:2024/4/13 16:57:00 -- 还是不对,只能循环一次 |
-- 作者:有点蓝 -- 发布时间:2024/4/13 17:15:00 -- 我测试没有问题,请上传实例说明 |
-- 作者:jjjeyes -- 发布时间:2024/4/14 14:00:00 -- 已经搞定,先前搞错了一个参数。班级人数数组bs(),里应该用n-1,我用的n |