我們用過excel做過公司報表,做過成績表,做過工資表,甚至用excel來炒過股,今天更牛逼的是用excel來制作復雜的公交向導!
根據站名代碼和路線名代碼把在預處理工作簿Sheet1工作表的各路線的路線名和站名在Sheet3轉化為用數字化路線表。得到了無論是直達的還是通過一次轉車達到目的站的公交路線的代碼后可從表1和表3得到包含上下車站的該公交路線所經車站,列在表4的B到H列,并用條件格式以不同的顏色顯示上下車車站和換車站。
一、給所有站名和線路名編碼
1、把公交路線表復制到一工作簿(下稱預處理工作簿)的Sheet1工作表,該公交線路表中的站名間是用符號“—”連接的,所以可用“數據”菜單中的“分列”選項使每一路線的所用站名相繼占用同一行中的一個單元格,然后對所有路線都進行上述操作。在路線名和站名間插入一列,給每個路線名賦予一個3位數的代碼。
2、在預處理工作簿Sheet2工作表對上述所有站名篩選出不重復的站名,再對這些站名中的漢字名規范化,即去掉各種空格,再篩選出不重復的站名。給每個站名賦予一個4位數的代碼。
二、建立數字化公交路線表
三、創建數字化經過各車站所有公交路線表
1、把Sheet3中每一路線的站名代碼與路線名代碼用CONCATENATE()函數連接起來,放在Sheet4中,然后對所這些由CONCATENATE()函數連接起來的7位數按大小進行排序。
2、Sheet4中經排序后的數字列放在Sheet5的A列,把Sheet2的篩選出的不重復的站名的代碼復制到B列,A列中前4位數相等的所有單元格的后3位數所代表的路線即為所有經過前4位數所代表的站的路線。這樣對B列中的每一站可用MATCH、RIGHT等函數列出所有經過每一車站公交路線代碼。這些代碼分別排列在C列及C列后。
四、建立公交向導工作簿
公交向導工作簿設4張工作表,工作表名分別為1、2、3、4。
1、把預處理工作簿Sheet1路線名復制到公交向導工作簿的表1的B列,路線名的代碼復制到A列和C列。
2、把預處理工作簿Sheet2站名復制到公交向導工作簿的表1的E列,站名的代碼復制到D列和F列。
3、把預處理工作簿Sheet5數字化經過各車站所有公交路線表復制到表2。
4、把預處理工作簿Sheet3數字化路線表復制到表3。
5、表4根據表1到表3數據查詢起始站和到達站查詢乘車路線或換乘路線。
五、查詢表的設計
1、直達路線的查詢
表4的AL列為所有車站的站名,A3和A5單元格為經“有效性”處理上下車車站的站名。I2、I3單元格為A3和A5單元格內站名的代碼。J、K列為所有經過上下車車站的各公交路線的代碼。L列是J、K列數據按大小排列成一列,M列是對L列各路線出現次數進行計數,如某一路線出現兩次,則該路線必定通過起始站和到達站即起始站和到達站間有直達路線。N列為查找所有直達路線所在表中的行數,O列則為相應的路線的代碼,因此,O列中大于零的個數即為起始站和到達站間可直達的路線數。
2、經一次轉車能到達的路線的查詢
經一次轉車能到達的路線就是要找到兩條路線,其中一條經過起始站一條經過到達站且這兩條路線要相交,這交點即為換車站。查找的途徑是:列出所有經過上下車車站的各公交路線(其代碼代碼在J、K列)所經過的全部車站,AG、AH兩列分別為經過按大小排列的上下車站的代碼。AI列為AG、AH兩列共有的車站,即換車站。換車站可能不止一個。P列為經過這換車站的所有公交車的路線的代碼,Q、R列分別為經過上下車站的公交車的路線的代碼。因此Q、R列中每一對代碼即代表了通過上下車站且有交點的兩條公交路線。