Excel VBA批量排座

花了三個小時,做了一個自動排坐的程序和模板,自動匹配排座创泄。效果如下圖

原始數(shù)據(jù)

座位模板

生成效果


源碼:

Option Explicit

Type typData

? ? NianJi As String

? ? BanJi As String

? ? XueHao As String

? ? XingMing As String

? ? ShiShiHao As String

? ? ZuoWeiHao As Integer

? ? WeiZhi As String

End Type

Sub ExamRoom()

? ? Dim i As Integer

? ? Dim j As Integer

? ? Dim r(1 To 64) As Integer

? ? Dim c(1 To 64) As Integer

? ? Dim DataStr() As typData

? ? Dim d As Object

'? ? Dim Loc() As String

'? ? Dim MaxNum() As Integer

? ? Dim Loc

? ? Dim MaxNum

? ? Dim LocCount As Integer

? ? Dim cnt As Integer

? ? Dim Has As Boolean

? ? Dim rng As Range

? ? Dim wb As Workbook

? ? Dim osht As Worksheet

? ? Dim sht As Worksheet

? ? LocCount = 0

? ? Set osht = ActiveSheet

? ? For i = 1 To 64

? ? ? ? For Each rng In Worksheets("64人").UsedRange

? ? ? ? ? ? If rng.Value = "空座" & i Then

? ? ? ? ? ? ? ? r(i) = rng.Row

? ? ? ? ? ? ? ? c(i) = rng.Column

? ? ? ? ? ? End If

? ? ? ? Next rng

? ? Next i


? ? Set d = CreateObject("scripting.dictionary")


? ? cnt = Cells(65536, 1).End(xlUp).Row - 2

? ? ReDim DataStr(0 To cnt)

? ? ReDim MaxNum(0 To 0)

? ? ReDim Loc(0 To 0)

? ? For i = 1 To cnt

? ? ? ? DataStr(i).NianJi = Cells(i + 2, 1)

? ? ? ? DataStr(i).BanJi = Cells(i + 2, 2)

? ? ? ? DataStr(i).XueHao = Cells(i + 2, 3)

? ? ? ? DataStr(i).XingMing = Cells(i + 2, 4)

? ? ? ? DataStr(i).ShiShiHao = Cells(i + 2, 6)

? ? ? ? DataStr(i).ZuoWeiHao = Cells(i + 2, 7)

? ? ? ? DataStr(i).WeiZhi = Cells(i + 2, 8)


? ? ? ? d(DataStr(i).WeiZhi) = d(DataStr(i).WeiZhi) + 1


'? ? ? ? Has = False

'? ? ? ? For j = 0 To UBound(Loc)

'? ? ? ? ? ? If Loc(j) = DataStr(i).WeiZhi Then

'? ? ? ? ? ? ? ? MaxNum(j) = MaxNum(j) + 1

'? ? ? ? ? ? ? ? Has = True

'? ? ? ? ? ? ? ? Exit For

'? ? ? ? ? ? End If

'? ? ? ? Next j


'? ? ? ? If Has = False Then

'? ? ? ? ? ? ReDim Preserve Loc(0 To UBound(Loc))

'? ? ? ? ? ? ReDim Preserve MaxNum(0 To UBound(MaxNum))

'? ? ? ? ? ? Loc(UBound(Loc)) = DataStr(i).WeiZhi

'? ? ? ? ? ? MaxNum(UBound(MaxNum)) = 1

'? ? ? ? End If

? ? Next i


? ? Loc = d.keys

? ? MaxNum = d.items


? ? Sheets(Array("40人", "48人", "56人", "64人")).Copy

? ? Set wb = ActiveWorkbook


? ? wb.Worksheets("40人").Range("3:3,7:7,11:11,15:15,19:19,23:23,27:27,31:31").ClearContents

? ? wb.Worksheets("48人").Range("3:3,7:7,11:11,15:15,19:19,23:23,27:27,31:31").ClearContents

? ? wb.Worksheets("56人").Range("3:3,7:7,11:11,15:15,19:19,23:23,27:27,31:31").ClearContents

? ? wb.Worksheets("64人").Range("3:3,7:7,11:11,15:15,19:19,23:23,27:27,31:31").ClearContents


? ? For i = 0 To UBound(Loc)

? ? ? ? If MaxNum(i) <= 40 Then

? ? ? ? ? ? wb.Sheets("40人").Copy After:=Sheets(Sheets.Count)

? ? ? ? ? ? ActiveSheet.Name = Loc(i)

? ? ? ? End If


? ? ? ? If MaxNum(i) <= 48 And MaxNum(i) > 40 Then

? ? ? ? ? ? wb.Sheets("48人").Copy After:=Sheets(Sheets.Count)

? ? ? ? ? ? ActiveSheet.Name = Loc(i)

? ? ? ? End If


? ? ? ? If MaxNum(i) <= 56 And MaxNum(i) > 48 Then

? ? ? ? ? ? wb.Sheets("56人").Copy After:=Sheets(Sheets.Count)

? ? ? ? ? ? ActiveSheet.Name = Loc(i)

? ? ? ? End If


? ? ? ? If MaxNum(i) <= 64 And MaxNum(i) > 56 Then

? ? ? ? ? ? wb.Sheets("64人").Copy After:=Sheets(Sheets.Count)

? ? ? ? ? ? ActiveSheet.Name = Loc(i)

? ? ? ? End If


? ? ? ? If MaxNum(i) > 64 Then

? ? ? ? ? ? MsgBox Loc(i) & "安排學(xué)生數(shù)量超過64!"

? ? ? ? ? ? Exit Sub

? ? ? ? End If



? ? Next i


? ? For i = 1 To cnt

? ? ? ? wb.Worksheets(DataStr(i).WeiZhi).Cells(r(DataStr(i).ZuoWeiHao), c(DataStr(i).ZuoWeiHao)) = DataStr(i).XueHao & DataStr(i).XingMing

? ? ? ? If DataStr(i).ZuoWeiHao = 1 Then

? ? ? ? ? ? wb.Worksheets(DataStr(i).WeiZhi).Cells(1, 1) = "(" & DataStr(i).NianJi & ")年級第一次月考(" & Format(DataStr(i).ShiShiHao, "00") & ")試室"

? ? ? ? End If

? ? Next i

? ? Application.DisplayAlerts = False

? ? wb.Sheets(Array("40人", "48人", "56人", "64人")).Delete

? ? Application.DisplayAlerts = True

? ? MsgBox "輸出完畢!"


End Sub

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抑淫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姥闪,更是在濱河造成了極大的恐慌丈冬,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甘畅,死亡現(xiàn)場離奇詭異埂蕊,居然都是意外死亡往弓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門蓄氧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來函似,“玉大人,你說我怎么就攤上這事喉童∑材” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵堂氯,是天一觀的道長蔑担。 經(jīng)常有香客問我,道長咽白,這世上最難降的妖魔是什么啤握? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮晶框,結(jié)果婚禮上排抬,老公的妹妹穿的比我還像新娘。我一直安慰自己授段,他們只是感情好蹲蒲,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侵贵,像睡著了一般届搁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窍育,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天卡睦,我揣著相機與錄音,去河邊找鬼蔫骂。 笑死么翰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辽旋。 我是一名探鬼主播浩嫌,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼补胚!你這毒婦竟也來了码耐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤溶其,失蹤者是張志新(化名)和其女友劉穎骚腥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓶逃,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡束铭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年廓块,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片契沫。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡带猴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出懈万,到底是詐尸還是另有隱情拴清,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布会通,位于F島的核電站口予,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涕侈。R本人自食惡果不足惜沪停,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驾凶。 院中可真熱鬧牙甫,春花似錦掷酗、人聲如沸调违。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽技肩。三九已至,卻和暖如春浮声,著一層夾襖步出監(jiān)牢的瞬間虚婿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工泳挥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留然痊,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓屉符,卻偏偏與公主長得像剧浸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子矗钟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本例為設(shè)置密碼窗口 (1) If Application.InputBox(“請輸入密碼:”) = 1234 Th...
    浮浮塵塵閱讀 13,648評論 1 20
  • 1.1 VBA是什么 直到90年代早期,使應(yīng)用程序自動化還是充滿挑戰(zhàn)性的領(lǐng)域.對每個需要自動化的應(yīng)用程序,人們不得...
    浮浮塵塵閱讀 21,745評論 6 49
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,325評論 0 10
  • 第一章 VBA是什么 Visual Basic Application 一個Excel文件就是一個工作簿(Work...
    PyJack閱讀 1,827評論 0 2
  • “幺妹” “要得”吨艇、“老孩”……自從我來了這以后躬它,每天都能聽到這些詞匯,帶著濃濃的川味东涡,像他們的火鍋一樣...
    wkj閱讀 598評論 0 0