□ 陸英浩 張 耘(上海大學 上海 200444)
Excel VBA在網球賽事編排記錄中運用的研究
□ 陸英浩 張 耘(上海大學 上海 200444)
網球賽事尤其是業余網球賽事的記錄編排工作是一件繁瑣、費時的工作,但又是一項賽事成功與否的重要決定因素。其工作過程中會使用到大量的表格,Excel強大的表格編輯功能,數據關聯功能,函數運算功能能夠十分高效的完成這些表格。
Excel VBA是office軟件集成了Vision Basic高級編程語言的開發工具。在網球賽事的抽簽,比賽順序表的安排,比賽結果的錄入和獲勝方晉級中存在著大量繁瑣、重復的工作。通過運用VAB編寫的程序能夠高效、準確的完成這些工作。
Excel VBA 網球賽事 編排記錄
近年來隨著網球運動的蓬勃發展,無論是專業運動員參加的職業賽事,還是業余選手參加的業余比賽,網球賽事的數量急劇增加。中國職業網球賽事的數量逐年遞增,賽事的級別也越來越高,這極大的刺激了網球文化的推廣和網球人口的增加。巨大的網球人口使業余網球賽事不斷增多,賽事規模越來越大。以全國大學生網球賽為例,在全國大學生網球協會成立之初只有寥寥幾所大學是會員單位,第一屆全國大學生網球比賽也只有十幾所高校參加。可到2014年該協會已有近200所高校會員單位。近幾年的全國大學生網球比賽參賽人數都近千人,比賽場次總數都超過了千場。如此大規模的網球賽事可謂嘆為觀止。這么多場次的比賽,無疑對賽事的組織者來說是一個巨大的挑戰。參賽運動員的報名;各個比賽項目的抽簽;每天賽程的安排;比賽結果的統計;賽事信息的發布,所有這些都形成了巨量的工作需要在短時間內完成。而一個網球賽事的成功與否,這些環節起著至關重要的作用。從實際工作中,我們發現這些繁瑣的工作有很多都是簡單的重復,這就意味著我們可以借助計算機系統去完成那些按照固定程序、簡單重復的工作。甚至一些復雜的,但具有很強邏輯關系的工作也可以借助計算機來實現。由于計算機的高速的運算能力,可以使這些繁復的工作變得高效、快速并且具有更高的準確率。本研究就是通過運用Excel VBA的函數及編程功能,設計制作了一套用于網球賽事的計算機編排記錄系統,以實現不斷提高我網球賽事競賽工作的效率。
1.1、Excel表單的結構設計
一個網球賽事需要很多表格記錄賽事的成績,比賽結果;公布賽事的進行順序。一般包括了如下表格:賽事信息表,參賽選手(團體隊伍)名單,抽簽完成后的簽位表,每一輪次的對陣表,每天的比賽順序表。這些表格在數據上都存在這一系列的關聯,而表格的格式有各有不同。Excel軟件在表格的設計;數據的關聯、相互引用;公式計算方面都具有十分強大的功能。利用Excel表格能夠羅列出有關賽事名稱、比賽時間、比賽地點、比賽項目、賽制的設置、裁判長等主要賽事信息。在參賽名單的表格中能夠運用Excel軟件的函數、排序等功能完成對數據的整理、歸納,為下一步的抽簽工作提供有效的數據。在手動抽簽功能的實現中,運用Excel的函數功能將之前參賽名單作為引用對象,輕松的實現包括選手名字、單位、種子的關聯。運用Excel VBA編程功能可以“一鍵”實現抽簽,這將極大的簡化抽簽的過程,節約時間、提高功效。抽簽工作完成后,通過數據的引用可以即時完成各個輪次的對陣表格,為下一步比賽順序的安排提供了極大的便利。對陣表格同時也是比賽結果的輸入的“容器”,在比賽結果輸入的同時,通過對數據的判斷完成簽表中進位選手的自動操作,實現進位和比分記錄。比賽順序表的編排一直是一件費時、費力的工作,但利用Excel的引用和VBA的編程功能能夠高效快速的實現編排功能,即使在需要臨時改變比賽順序時也能快速地作出調整。
1.2、格式的設計
網球比賽淘汰賽和循環賽的表格格式遵循了體育賽事的一般規律。但,網球賽事每日的比賽場次較多,特別是在參賽人數眾多和項目設置復雜的業余賽事中,由于每場比賽時間的不可控因素,比賽順序的表格的設計又有一定特殊性。Excel軟件在表格的設置方面具有十分靈活的特性,所以能夠輕松地設計出各種格式。通過對Excel表格中單元格不同位置的邊框設置能夠完美的顯示出淘汰賽的格式。在循環賽的格式設計中,通過設置相同的單元格高度和寬度,能夠很好的實現循環賽表格的顯示。同時,通過單元格引用,能夠實現參賽選手在“行”顯示和“列”顯示的同步。在每日比賽順序表的格式設計中,運用Excel單元格邊框設置,將顯示每個比賽的比賽開始時間、比賽項目、對陣雙方、代表單位等信息羅列在一個邊框格之內,并將一天的比賽制作成一張大的表格。這樣就能將一整天比賽順序的信息全部展現出來,無論是參賽的運動員、教練員,還是裁判人員多能對一天的賽事進程有一個全面的了解。
1.3、模版的建立
在業余網球比賽中需要依據規程的要求和各項目參賽人數的多少設置淘汰賽的簽位數或循環賽的分組數和每組的人數。這就給賽事各表格的設置帶來了很大的麻煩。如果通過VAB代碼來完成這些表格的設計和繪制,由于參數的多樣性,各表格之間數據關聯和引用的復雜性,勢必使得代碼十分冗長。程序的編寫也會十分復雜。生成的文件會十分龐大,在實際程序運行中速度會變得十分緩慢。針對這些問題,本研究通過歸納各種淘汰賽簽位數及分組循環賽分組數和每組人數的各類情況,預先制作各個簽位數或分組情況的模版。在各個模版中設置各個表格的格式,建立數據的關聯和引用,編寫各自的VBA程序代碼。在比賽之前根據賽事的要求,通過Excel表單復制的功能復制模版中相應的表單,建立符合各個項目需求的文件,這樣既能靈活的適應不同賽事的要求,又能簡化程序,提高運行的效率。
1.4、種子與輪空位的設置
在網球比賽中,種子的簽位位置有著特殊要求,其原則是保護種子在比賽中獲得優于非種子選手的晉級機會,同時使得種子選手之間盡可能的在較后的輪次中相遇。在業余網球比賽淘汰賽簽位數或循環賽的分組數必須是2的N次冪,而參賽人數往往會少于預設的數字,這時就會產生輪空位置。在淘汰賽中輪空位置的設置,首先應該考慮的是種子依據排序的高低優先享有輪空。當輪空數多于種子時,應隨機的發布到上下半區中。而循環賽中,則是種子所在的組優先享有輪空。這些抽簽原則在本研究中,通過編寫VBA程序代碼由計算機自動來完成,這樣使得本來十分繁瑣的工作,借助Excel強大的編程功能高效、快速的得以完成。
1.5、規避原則的實現
網球賽事中,參賽的選手有可能是來自同一地地域同一單位。為了使相同地域或相同單位的選手盡可能在較晚的輪次中相遇,在抽簽時必須要遵循規避的原則。在淘汰賽中,要依據同地域或同單位參賽者的數量將簽位分成不同的區域。在手工抽簽時,為了實現這些原則往往采用雙盲的抽簽方式或兩次抽簽的方式。無論是雙盲抽簽還是兩次抽簽,每一個參賽對象的抽簽工作都要通過二個步驟實現,抽簽過程復雜而耗時。然而,通過Excel VBA程序的判斷語句,可以對每次的抽簽結果進行相同簽位區域內同地域或同單位判斷,如有違反規避原則時,可以重新抽簽。這一步驟不斷重復進行,直到規避原則得以實現。由于這個過程是由計算機完成的,所以整個過程會十分快速。這一功能的實現能極大的縮短抽簽的時間。
1.6、抽簽方式的確定
傳統的抽簽方式是先將參賽者依據種子、同單位數量多少等原則進行整理、排序。然后在簽表中依照簽位的順序抽取名單表格中的序號落位。抽簽的順序是:種子依據規則落如相應位置;輪空位進入種子對應位置;多余的輪空隨機抽入上下半區;依次在空白簽位上抽入參賽者。這種抽簽方式通過雙盲抽簽或二次抽簽的方式實現同地域或同單位規避的原則。但在使用Excel VBA編程實現自動抽簽時,由于采用判斷同區域是否有同地域或同單位參賽對象的方式實現規避原則,所以如果不優先讓同地域或同單位數量多的參賽者入位的話,會造成規避原則無法實現。基于這種情況的考慮,在運用Excel VBA程序自動抽簽時,在用傳統方式完成種子和輪空的入位后,采用依據參賽名單中同單位數量從多至少的順序抽簽。而且,抽簽的方式是隨機抽取空白簽位號,再讓相應序號的參賽對象落入簽位。這種方式盡管與傳統手工抽簽方式不同,但能有效的實現同地域或同單位規避原則,使得抽簽的過程能夠用計算機編程語言有效地體現出來。
1.7、隨機數的產生
采用抽簽的方式確定比賽的對手,最為核心的目的就是對陣雙方的隨機性,這也體現了網球比賽的公平性。Excel VBA中的隨機函數能夠產生隨機數,通過與取整函數共同運用,采用公式Int(Rnd()*(B-A))+A就能產生介于A與B區間的自然數。這就完全契合了抽簽時的隨機性,為運用計算機程序完成抽簽奠定了基礎。但對計算機產生隨機數的工作原理的進一步了解,本研究發現:計算機隨機函數產生的隨機數其實是偽隨時數。具體來說,這些連續兩次產生的隨機數具有很高的重復率。為了解決這一問題,本研究采用了Randomize函數在產生隨機數之前重置了隨機種子。使用該函數后使得每次使用計算機程序抽簽是均能產生與前一次不同的抽簽結果,這使得計算機自動抽簽的結果更具有公平性。
2.1、網球賽事尤其是業余網球賽事的記錄編排工作是一件繁瑣、費時的工作,但又是一項賽事成功與否的重要決定因素。其工作過程中會使用到大量的表格,Excel強大的表格編輯功能,數據關聯功能,函數運算功能能夠十分高效的完成這些表格。
2.2、Excel VBA是office軟件集成了Vision Basic高級編程語言的開發工具。在網球賽事的抽簽,比賽順序表的安排,比賽結果的錄入和獲勝方晉級中存在著大量繁瑣、重復的工作。通過運用VAB編寫的程序能夠高效、準確的完成這些工作。
[1]《Excel2007 VBA 參考大全》,人民郵電出版社,2009年3月出版.
[2]《Excel VBA實戰技巧精粹》,人民郵電出版社,2008年7月出版.