VIP學員的問題,要根據類別、名稱、保管部門、數量4個條件自動生成編碼。

編碼規則:SH(2位)+類別碼(2位)+部門(4位編號)+順序碼(流水碼4位)。

這裏涉及到的知識非常多,盧子拆分開來講。

SH爲固定值,這個暫時先不管。

類別碼,可以根據類別名稱VLOOKUP。
=VLOOKUP(A2,I:J,2,0)

部門碼,跟類別碼一樣,通過VLOOKUP就可以。
=VLOOKUP(D2,I:J,2,0)

順序碼,這個要根據類別、數量2個條件得到,並且保留4位數。

計算規則有點麻煩,比如類別爲辦公品,第一行就從1開始,第二行就從1+1=2開始,第三行需要結合數量1+8+1=10,從10開始。

轉換成Excel語言就是累計類別上一行數量再+1。辦公品是從第4行開始,A$3:A3就是從第3行開始,累計也就是需要鎖定開始單元格,這樣下拉區域纔會逐漸變大。SUMIF累計後,再+1。
=SUMIF(A$3:A3,A4,E$3:E3)+1

順序碼要統一成4位數,再嵌套TEXT,第二參數4個0就代表4位數。
=TEXT(SUMIF(A$3:A3,A4,E$3:E3)+1,"0000")

將全部內容組合起來,就是最終的公式。
="SH"&VLOOKUP(A2,I:J,2,0)&VLOOKUP(D2,I:J,2,0)&TEXT(SUMIF(A$1:A1,A2,E$1:E1)+1,"0000")

再補充一些相關的知識。

1.根據類別累計序號

B$2:B2下拉的時候變成B$2:B3、B$2:B4,區域逐漸變大,從而起到累計的作用。
=COUNTIF(B$2:B2,B2)

2.篩選的時候累計序號

SUBTOTAL可以對篩選的內容進行各種計算,第一參數爲3代表計數,公式最後*1是防止最後一行當成總計導致篩選出錯。
=SUBTOTAL(3,B$2:B2)*1

3.刪除、插入行保持動態序號

選擇區域,插入表格,確定。

輸入公式。
=ROW()-1

推薦:SUBTOTAL,Excel中最強大的動態序號函數,沒有之一

上篇:哇,僅憑一個逗號居然解決Excel求和兩大難題

作者:盧子,清華暢銷書作者,《Excel效率手冊 早做完,不加班》系列叢書創始人,個人公衆號:Excel不加班(ID:Excelbujiaban)

相關文章