一些數據會重複出現在表格的不同行列中。如老師任課表,由于一些老師會在多個班級任教,因此其姓名會在表中重複出現,現在需要将所有一線任課老師的姓名從表中提取出來,這就會涉及去重問題。如何實現去重呢?下面筆者以Excel 2019為例介紹具體的操作方法。假設學校無重名的老師,若有則需要先标注以示區别(如張三1,張三2)。
文| 俞木發
○ 方法1. 删除重複值法
用Excel内置的“删除重複值”去重很方便。不過,這個方法要求數據均在一列才行。因此對于多行多列的數據,需要先将去重數據歸集在一列中。比如下面是某校老師任課表,現在需要在J列中列出所有任課老師的去重名單(圖1)。
(圖1)
定位到B10單元格并輸入公式“=C2”,然後向右填充到H10單元格,選中B10:H10數據區域,向下填充公式,直到B列單元格中出現數字0為止,這樣在B列中便可以引用全部老師的姓名(圖2)。
(圖2)
公式解釋:
這裡使用“=”在B10單元格中開始引用下一列的數據,公式下拉後B10:H10就會依次引用各自下一列的數據,直到沒有數據為止(單元格顯示0),所以最終在B列中可以引用所有任課老師的數據。
繼續選中B2:B57區域(總共56條數據,B58單元格中的數字為0)中的數據并複制,接着定位到J2單元格,依次點擊“開始→粘貼→值”,選中J列中的數據,依次點擊“數據→删除重複值”,在彈出的窗口中勾選“列J”,點擊“确定”(圖3)。
(圖3)
這樣J列中的重複值就自動被剔除,在該列中就可以保留不重複的老師名單了(圖4)。如果後續名單發生了變化,隻要重複上述操作,然後再次執行去重操作即可。
(圖4)
○ 方法2. 函數法
上述方法是手動去重,如果名單發生變化,還需要再次去重。如果要實現去重的自動化,可以借助于函數來實現。
定位到K2單元格并輸入公式“=OFFSET(B$2,MOD(ROW(A1)-1,8),INT((ROW(A1)-1)/8))”,然後下拉填充到單元格顯示數字0為止(圖5)。
(圖5)
公式解釋:
先使用MOD函數對“(行數-1)”值和除數“8”(對應原始數據包含老師名單的行數,如本例是8行,第2行-第9行)取餘,然後将其作為OFFSET函數偏移的列号。因為原始數據為8行,所以每8行會向右偏移1列引用。接着使用INT函數對“(行數-1)/8”數值向下取整,将其作為OFFSET函數偏移的行号數據。引用的基準是B$2(行鎖定),這樣下拉公式時,OFFSET就會在K列依次引用B2:H10區域中的數據。
繼續定位到L2單元格,輸入公式“=IFERROR(INDEX($K$2:$K$100,MATCH(,COUNTIF($L$1:L1,$K$2:$K$100),)),)”,然後定位到公式地址欄,按下“Ctrl Shift Enter”組合鍵完成數組公式的輸入,接着下拉填充公式,直到單元格顯示為0,完成去重名單的提取(圖6)。
(圖6)
公式解釋:
先使用COUNTIF函數以“$L$1:L1”為計數條件,計數區域是“$K$2:$K$100”。這裡K100數字至少要比圖5中OFFSET函數引用時出現的數字0單元格行号的數字要大。然後将這個計數作為MATCH函數的引用數值,再将其作為INDEX函數引用的行号值。最後在外層嵌套IFERROR函數,對沒有引用數值的單元格顯示為空。這樣作為數組公式使用時,就可以對$K$2:$K$100區域的數據完成去重操作。
○ 方法3. VBA法
多行多列數據去重,實際操作是先将數據組成一列,然後去重,在VBA中可以借助于RemoveDuplicates函數來快速實現。
先到“htt
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!