1樓:匿名使用者
給你一段程式,可以解決。
要求:1、在表一(sheet1)裡,建立五列,a-e,分別對應五個班,與原班號無關,見下點。
2、其中,a列人數最多,e列最少,要求排序,可以有相同人數
3、建表二(sheet2),用於接收結果
說明:1、下面程式中有5個常量n1-n5,分別對應從多到少的人數,也就是a-e列的行數,根據實際情況要改動一下
2、將程式放到vb裡,具體方法參閱其他帖子,基本上在「工具-巨集-vb編輯器」裡
3、執行後,表二是結果
sub 排班()
const n1 = 47, n2 = 45, n3 = 43, n4 = 41, n5 = 41 '各班人數,根據實際填寫,但要從大到小排列,即從a到e列的行數
dim nrow as integer
for nrow = 1 to n1
sheets("sheet2").cells(nrow * 5 - 4, 1) = sheets("sheet1").cells(nrow, 1)
next nrow
for nrow = 1 to n2
sheets("sheet2").cells(nrow * 5 - 3, 1) = sheets("sheet1").cells(nrow, 2)
next nrow
for nrow = 1 to n3
sheets("sheet2").cells((n1 - nrow) * 5, 1) = sheets("sheet1").cells(n3 - nrow + 1, 3)
next nrow
for nrow = 1 to n4
randomize
dim tmp as integer
tmp = int(rnd() + 0.5) '隨機取值0或1
sheets("sheet2").cells((nrow - 1) * 5 + 3 + tmp, 1) = sheets("sheet1").cells(nrow, 4)
sheets("sheet2").cells((nrow - 1) * 5 + 3 + (1 - tmp), 1) = sheets("sheet1").cells(nrow, 5)
next nrow
for nrow = (n1 + 1) * 5 to 1 step -1
if sheets("sheet2").cells(nrow, 1) = "" then
sheets("sheet2").rows(nrow).delete shift:=xlup
end if
next nrow
end sub
2樓:
在1班後面輸入:16
然後向下填充,
在2班後面輸入:27
然後向下填充,
以此類推,再根據這列排序就行了
3樓:匿名使用者
你的每個班應該有個班號吧,如1、2、3班:
1班 56
1班 78
1班 96
1班 87
2班 76
2班 89
2班 85
2班 100
3班 83
3班 99
3班 87
3班 75
這樣吧:
先選分數列——降序排序
再選班級列——升序排序
excel如何複雜排序,EXCEL複雜排序問題
直接排序是行不通的。只能使用輔助列。假設你提供的資料是在 a列,那麼,從你提供的資料看,頻率都是100以內,即,二位數最多。那b1輸入 right a1,2 1 下拉填充,然後排序時,主要關鍵字是b列。即可 如果,你的頻率不固定,即有可能出現100以上,那麼,從你的資料看,每行最多二個空格,即單詞後...
EXCEL排序問題?Excel排序的問題!
未明白題目中的每一行自動排序的意思,所以以下僅是針對如何將你的資料按照5行 空行的形式進行排序。1 首先計算你的資料條數是多數,假如是100,那麼100 5 20,那麼在你的資料前面插入一列序號,然後按照1到20排序。2 然後全選你標序的1到20,按ctrl,出現十字元號後雙擊,會自動生成5個1到2...
excel排序問題
我想用函式做,但實在麻煩,沒有想出來。我想用這個辦法,你看怎樣。第一步 在第一張表插入一列,輸入序號1,2,3,4 這樣就有了五列。第二步 1 選中前三列,按列b 不含擴充套件區域 排序。2 選中後兩列,按列d 不含擴充套件區域 排序。這樣,兩組資料的順序就一樣了。第三步 選中所有行,按列a升序排列...