excel無序不重排序

時間 2022-04-05 20:00:20

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升序排列...