天天看點

Excel寫批量代碼(一)

在做一些大型項目的時候,經常會用到許多的get和set方法。這些方法都不難,可以說除了裡面設定的項目名稱不一樣外,剩下的部分都完全一樣,如果都一個一個的手打的話,即便再熟練的程式員也得需要一段時間,更何況裡面再添加的點注釋,更是麻煩。雖然有了諸如orika這樣的JavaBean拷貝架構,但是還是不能避免寫這樣的代碼:

// 公司代碼
outDto.getCompanyCode(inDto.companyCode); 
 // 合同書編号
outDto.getContractNo(inDto.contractNo); 
 // 檔案路徑
outDto.getFilePath(inDto.filePath); 
 // 房屋編号
outDto.getHouseNo(inDto.houseNo); 
 // 備注1
outDto.getXOther1(inDto.xOther1); 
 // 房屋面積
outDto.getSpace(inDto.space); 
 // 使用者名
outDto.getUserId(inDto.userId); 
 // 樓層
outDto.getFloor(inDto.floor); 

           

一般的項目還好,倘若有上百個這樣的項目這樣寫,不僅很累,而且容易出錯。那麼有沒有什麼好的方法使我們解脫出來呢?

Excel有着優秀的函數處理能力,我們可以用其來寫這些重複度很高的代碼。本文就以一個例子來詳細說明如何使用Excel寫模闆化的代碼。

假如說現在有一個房地産公司需要一個列印房租合同的項目工程,你拿到了關于合同書的那部分代碼設計書,裡面關于合同書具體項目的設定是下面這樣一個表格:

Excel寫批量代碼(一)

你需要完成的成果代碼要和最上面的例子一樣。那麼我們可以觀察一下這個表格,已經給出了我們在代碼裡面的命名,同時“備注”這一項有很多個,我們在寫代碼時要用數字加以區分。

Excel寫批量代碼(一)

這是我寫好的一個自動代碼生成器的截圖,你隻用把上述表格的中文項目拷貝出來,放在漢字名稱的下面,再點選一下右邊的按鍵,表格的最後一欄就是我們需要的代碼,而且是帶注釋的哦!

Excel寫批量代碼(一)

怎麼樣,是不是很友善?下面我就來教大家怎麼做這樣一個代碼生成器

首選建立工作表,命名為list,把上面的題頭先寫進去。

Excel寫批量代碼(一)

然後再建立一個sheet,我們命名為項目一覽,我們可以把上面合同書裡面的所有項目做個彙總,放在“項目一覽”工作表裡面

Excel寫批量代碼(一)

接下來就是重頭戲了,這個代碼編輯器其實主要是Excel函數的使用以及VBA程式設計的相關内容。

我們先寫第一欄,No,就是編号,如果漢字名稱那一列有東西的話,就會把它的編号顯示出來,是以應該使用的是IF函數

IF(判斷邏輯,TRUE的情況,FALSE的情況)

我是這樣寫的:

=IF(LEN(B2)=0,"",ROW() - 1)

B2單元格的字元長度如果為0(其實就是空白的時候),函數傳回空,否則的話,傳回行号減去1(偷懶一下,我發現所有編号都可以拿行号來變換)

然後是第三列,項目别名,就是它的英文名稱,這樣的名稱在大型項目裡面有很嚴格的規約,甚至會直接給出一個類似詞典的檔案,編寫相同項目時必須用一樣的名稱。我們這裡就寫一個查找的方式,在項目一覽這個工作表裡面查找,把查找結果傳回。這裡就是Excel的查找函數VLookUP

VLOOKUP(查找值,查找範圍,查找列數,精确比對或者近似比對)

我是這樣寫的:

=VLOOKUP(B2,項目一覽!$B$2:$C$9,2,0)

還是拿着B2來找,因為要跨工作表,是以在查找範圍前面加上“項目一覽!”來聲明區域所在工作表,2表示選擇區域的第二列,如下圖所示:

Excel寫批量代碼(一)

第二列都是英文名稱,正是我們所需要的。最後一個0代表精确查詢。

項目總數一覽用來統計該項目出現了多少次,我們用COUNTIF來進行計數

countif(範圍,條件)

我是這樣寫的:

=COUNTIF($B$2:$B$100,B2)

條件直接寫上B2,Excel會自動用B2在選擇區域内一一進行比對

同理,項目計數用的方法類似,但是計數是要逐漸往上長的,是以我的寫法為=COUNTIF($B$2:B2,B2),隻是把範圍更改了一下。

變換後别名我用到了VBA的相關内容,這部分我将在下一篇進行詳細講述。

繼續閱讀