到一位朋友求助,提取每位員工新進單位的最早日期,原表大致是這樣:
按自定義排序,姓名遞增,單位 日期遞增后如圖所示
大致得到下面這個樣子:
最終得到的效果是這樣子的
看我怎么改造成自動化報表的:
=SORT(A2:D48,{1,3,4},1) 函數(shù)對原表第1列,第3列,第4列進行自定義增序排序,得到第一個圖的結果。
=UNIQUE(A2:A48&C2:C48&YEAR(D2:D48))得到如下所示:
得出這樣的結果有利于我們構造VLOOKUP函數(shù):=VLOOKUP(I27,IF({1,0},$A:$A&$C:$C&YEAR($D:$D),$D:$D),2,0),利用文本鏈接符號構造人員姓名+區(qū)域+年份第一列的查找區(qū)域。前面我們用了增序排列,VLOOKUP函數(shù)的特性就是能找出重復值的第一個,連接符最后四位對應的是年份,這樣就能求出每年的最早的一個月了。
VLOOKUP(I27,IF({1,0},$A:$A&$C:$C&YEAR($D:$D),$D:$D),2,0) 函數(shù)得出的結果
人名姓名字符個數(shù)不是三位就是2位,用=MID(I27,1,LEN(I27)-6)準確獲取人名,編號VLOOKUP很輕松就能查找出來,最后用=MID(I27,2,2) 獲取區(qū)域,日期一一對應相等,就獲取完了。
總結一下:排名函數(shù)SORT VLOOKUP 多條件查找,文本函數(shù) MID LEN。最后做成多表聯(lián)動就能得到自動更新。其實用到的知識點不難,重在怎么巧妙構造函數(shù)進行求解。
如果你感覺凱哥分享的還不錯的話,別忘了收藏點贊+關注。
Excel表格登記的訂貨臺賬,為了與后續(xù)的發(fā)貨、發(fā)票、貨款等臺賬信息關聯(lián),方便后續(xù)的對賬與結算,最好給每一筆訂單賦予一個唯一的訂單編號。便于在Excel中用函數(shù)生成,可以考慮用“日期+遞增順序號”的方式。
一、需要解決的問題
1、將日期轉換為8位的編號,如2022/4/23的日期編號為20220423。
2、根據(jù)訂單錄入的順序,按天獲取遞增的順序號
3、當月、日為1位數(shù)時,以及順序號位數(shù)不足時,需要在左邊補充0。
說明:訂貨日期在G列,M列作為順序號的輔助列。
二、使用COUNTIF生成遞增順序號
在M2單元格輸入公式:=COUNTIF($G:G2,G2);表示從G列第2行到當前行,當前行的日期出現(xiàn)了多少次。
三、生成訂單編號
1、使用TEXT函數(shù)生成訂單編號
N列為補全位數(shù)后的順序號,在N2輸入公式:=TEXT(M2,"0000")。顯示:0001
O列為8位的日期編號,在O2輸入公式:=TEXT(G2,"YYYYMMDD")。顯示:20190105
通過以上兩步已經(jīng)分別實現(xiàn)了日期編號和順序號。則可以將兩個公式用&連接起來,并將M2替換為COUNTIF($G:G2,G2)。在P2輸入公式:=TEXT(G2,"YYYYMMDD")&TEXT(COUNTIF($G:G2,G2),"0000")。顯示:201901050001
2、使用REPT函數(shù)生成訂單編號
用REPT函數(shù)會比TEXT函數(shù)稍微復雜一些。REPT函數(shù)可以按照定義的次數(shù)重復顯示文本,相當于復制文本。如果月份為1位數(shù),就要REPT函數(shù)顯示1個0,再拼接月份。
L列為補全位數(shù)后的順序號,在L2輸入公式:=REPT("0",4-LEN(M2))&M2。顯示:0001
I列為年份,在I2輸入公式:=YEAR(G2)。顯示:2019
J列為兩位數(shù)的月份,在J2輸入公式:=REPT("0",2-LEN(MONTH(G2)))&MONTH(G2)。顯示:01
K列為兩位數(shù)的日,在K2輸入公式:=REPT("0",2-LEN(DAY(G2)))&DAY(G2)。顯示:05
通過以上幾步已經(jīng)分別實現(xiàn)了年、月、日的編號和順序號。因為計算每一個編號的公式都比較長,如果將四個公式都拼接起來,后續(xù)難以查閱理解,則可以將幾個單元格用&連接起來。在H2輸入公式:=I17&J17&K17&L17
項目上有一個需求,根據(jù)某一個具體的時間(yyyy-MM-dd),并按照天進行遞增,自己對API不是很熟悉,因此,做個例子記錄一下。