筆者所在單位今年實行了全國計算機應用等級考試,根據晉升職務級別的不同,考生可選擇2至4個模塊應試。每個考生具有唯一的檔案號,同一次考試合格1個及以上模塊者,取得1個合格證書,合格證標注了考生合格的模塊。
假如考生劉XX合格1科,有1科的合格證,考生王XX合格了3科,也同樣取得了一個合格證書,合格證顯示了合格的3個模塊(圖1)。為方便查詢及便於考生領證簽名,需要將圖1中相同檔案號考生的合格模塊進行合並,模塊之間用“/”分隔(圖2),那麼如何實現上述效果呢? 由於相同的檔案號有2個、3個和4個三種情況,因此,要合並的模塊數不是固定的,要解決此類問題需要用數組公式。
圖1 Excel表格中相同檔案號的三個模塊
圖2 合並Excle相同的檔案
具體方法如下:
一、定義名稱
為簡化公式,需要對引用單元格區域設置名稱。
執行“插入→名稱→定義”命令,打開“定義名稱”對話框,將名稱定義為“Date”, 在“引用位置”文本框中輸入公式:= Sheet1!$C:$C,按下“確定”按鈕返回。接著用同樣方法,再定義另一個名叫“Code”的名稱,裡面包括公式:= Sheet1!$A$2: $A$1200,即A列所在的數據區域。
二、輸入公式
首先在E2單元各種輸入公式:
“=IF(ISERR(INDEX(Data,SMALL(IF(Code=$A2,ROW(code)),1))),"",INDEX($C:$C,SMALL(IF(code=$A2,ROW(code)),1))&"/") ”。該公式首先對A列進行判斷,如果A2單元格內容存在於Code區域,則返回該單元格行號,如果存在重復,則取最小的行號。再用函數INDEX()選取該行對應的Data區域單元格內容,並用"/"分隔。為避免出現錯誤值,這裡還使用了信息函數ISERR(),如果出現錯誤值,則為空白,否則為公式顯示的內容。公式輸入完成後,按“Ctrl+Shift+Enter”組合鍵即可。因為相同檔案號最多為4個,因此,還需取第2、第3、第4小的行號。所以還需在F2、G2、H2單元格中依次輸入數組公式:
F2單元格:=IF(ISERR(INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),2))),"",INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),2))&"/") G2單元格: =IF(ISERR(INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),3))),"",INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),3))&"/")
H2單元格: =IF(ISERR(INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),4))),"",INDEX($C:$C,SMALL(IF($A$2:$A$21=$A2,ROW($A$2:$A$21)),4)))
以上公式輸入完成後都要按“Ctrl+Shift+Enter”組合鍵結束公式輸入。然後在D2單元格輸入公式:“=E2&F2&G2&H2”。將E2、F2、G2、H2單元格內容連接起來。此時可以看到合格1至3個模塊的考生,單元格內容合並後,結尾多了符號“/”,還須將此多余的符號刪除。據此,在I2單元格輸入公式:=IF(RIGHT(D2,1)="/",MID(D2,1,LEN(D2)-1),D2) 。
所有公式輸入完成後,選擇D2:I2單元格區域采用拖動復制的辦法,將公式復制到相應區域。這樣就完成了相應數據的合並。最後還需要刪除公式,具體方法是:復制所有含公式的區域,執行“編輯→選擇性粘貼”命令,在“選擇性粘貼”對話框中,選擇“數值”選項即可。
完成上述操作後還沒達到圖2的效果,還需使用公式將重復的數據行刪除。因此,在J2單元格輸入公式:=IF(A2<>A3,A2,"") 。並復制到相應數據區域,再使用排序或篩選的辦法將J列空白區域刪除,對數據區域作適當處理就完成了圖2所示的效果。