如果您使用名稱數據集,對其進行排序是您必須經常執行的常見任務之一。
根據全名按字母順序對數據進行排序非常容易,其中 Excel 使用名稱的第一個字符進行排序。
但是,如果您想在 Excel 中按姓氏對數據進行排序怎麼辦?
雖然它不是那麼簡單,但仍然可以完成(很大程度上還取決於名稱數據的結構方式)。
無論您使用哪種方法,您都必須以某種方式從全名中提取姓氏並將其放在單獨的列中。然後,您可以使用此列按姓氏字母順序對數據進行排序。
在本 Excel 教程中,我將向您展示如何根據姓氏對具有名稱的列進行排序。
所以讓我們開始吧!
使用查找和替換按姓氏提取和排序
按姓氏排序的第一步是在單獨的列中獲取姓氏。
您可以通過用空白替換姓氏之前的所有內容來做到這一點,這樣您就只剩下姓氏了。
假設您有一個如下所示的數據集,並且您希望使用姓氏按字母順序對該數據進行排序。
以下是按姓氏排序的步驟:
- 選擇包含標題的數據集(在本例中,它將是 A1:A10)
- 將其複製到相鄰列中(如果相鄰列不為空,則插入新列,然後復制這些名稱)
- 重命名複製的列標題。在此示例中,我將命名為“姓氏”
- 選擇所有復制的名稱(不要選擇標題)
- 按住 Control 鍵,然後按 H 鍵。這將打開查找和替換對話框。
- 在查找內容字段中,輸入 *(星號後跟空格字符)
- 將替換為字段留空
- 單擊全部替換。這將立即替換所有名字,您將只剩下姓氏。
上述步驟將保留姓氏並刪除它之前的所有內容。即使您有中間名或前綴(例如 Mr. 或 Ms),這也很有效。
在相鄰列中獲得姓氏後,您可以輕鬆地根據姓氏按字母順序對數據集(包括全名)進行排序。
以下是按姓氏排序的步驟:
- 選擇帶有標題的整個數據集(包括全名和提取的姓氏)。您還可以包括要與名稱一起排序的其他列
- 單擊數據選項卡
- 點擊排序
- 在“排序”對話框中,確保選中“我的數據有標題”。
- 在“排序依據”選項中,選擇只有姓氏的列的名稱
- 在“排序方式”中,選擇“單元格值”
- 在“訂單”選項中,選擇“A 到 Z”
- 點擊確定
上述步驟將根據姓氏對整個選定的數據集進行排序。
完成後,您可以刪除具有姓氏的列。
專業提示:在任何時候,如果您認為您可能需要返回原始數據,您需要有一種方法來取消對該數據集的排序。為此,在相鄰列(左或右)中,在排序之前有序列號。現在,如果您需要返回原始數據,您可以通過基於數字的排序來獲得它。
使用公式按姓氏提取和字母排序
雖然上面顯示的方法(使用查找和替換)是我更喜歡獲取所有姓氏並根據它進行排序的方法,但它的一個限制是生成的數據是靜態的。
這意味著如果我在列表中添加更多名字,我將不得不再次執行相同的過程來獲取姓氏。
如果這是您不想要的,您可以使用公式方法按姓氏對數據進行排序。
假設您有如下所示的數據集。
下面是從全名中提取姓氏的公式:
=RIGHT(A2,LEN(A2)-FIND(" ",A2))
上面的公式依賴於具有全名的模式(在此示例中僅包含名字和姓氏)。模式是名字和姓氏之間會有一個空格字符。
FIND 函數用於獲取空格字符的位置。然後從名字的總長度中減去這個值,得到姓氏中的字符總數。
然後在 RIGHT 函數中使用該值來獲取姓氏。
一旦你有了姓氏列,你就可以對這些數據進行排序(這在第一種方法中有詳細介紹)。
當您只有名字和姓氏時,上述公式將起作用。
但是,如果您也有中間名怎麼辦。或者名字前可能有稱呼(如先生或女士)
在這種情況下,您需要使用以下公式:
=RIGHT(A2,LEN(A2)-FIND("@",SUBSTITUTE(A2," ","@",LEN(A2)-LEN(SUBSTITUTE(A2," ","")))))
上面的公式找到最後一個空格字符的位置,然後用它來提取姓氏。
我建議你在所有情況下都使用第二個公式,它更簡單,可以處理所有情況(只要姓在名字的末尾)。
注意:這兩個公式依賴於每個名稱元素之間只有一個空格字符的條件。如果有雙空格或前導/尾隨空格,此公式將給出不正確的結果。在這種情況下,最好使用 TRIM 函數先去掉任何前導、尾隨和雙空格,然後使用上述公式。
雖然這似乎是一種複雜的方法,但使用公式的好處是它可以使結果動態化。如果您在列表中添加更多名稱,您所要做的就是複制公式,它會為您提供姓氏。
使用文本到列
Text to Columns 又是一種在 Excel 中拆分單元格的簡單方法。
您可以指定分隔符(例如逗號或空格)並使用它來分割單元格的內容。在單獨的列中拆分元素後,您可以使用具有姓氏的列來按字母順序排列數據。
假設您有一個如下所示的數據集:
以下是使用 Text to Column 按姓氏排序的步驟:
- 選擇具有名稱的列(不包括標題)
- 單擊數據選項卡
- 在“數據工具”組中,單擊“文本到列”選項。這將打開 Text to Columns 嚮導
- 在“將文本轉換為列嚮導”的第 1 步中,選擇“分隔”並單擊“下一步”
- 在第 2 步中,選擇“空格”作為分隔符(如果選中則取消選中其他任何內容),然後單擊下一步按鈕。
- 在第 3 步中,選擇數據預覽中的名字列,然後選擇“不導入列(跳過)”選項。這可以確保名字不是結果的一部分,您只會得到姓氏。
- 同樣在步驟 3 中,將目標單元格更改為與原始數據相鄰的單元格。這將確保您單獨獲得姓氏並且原始姓名數據是完整的。
- 點擊完成
獲得結果後,您可以按姓氏排序。
當您有逗號作為分隔符時,您還可以使用文本到列來分隔名字和姓氏。
使用閃光填充
另一種快速獲取姓氏的方法是使用 Flash Fill 功能。
Flash Fill 是在 Excel 2013 中引入的,它通過識別模式來幫助操作數據。為此,您需要多次顯示 Flash Fill 您期望的結果。
一旦它識別出模式,它將迅速為您完成其餘的工作。
假設您有以下名稱數據集。
以下是使用 Flash Fill 獲取姓氏並使用它進行排序的步驟:
- 在單元格 B2 中,輸入文本“Maury”。這是您在單元格中期望的結果。
- 轉到下一個單元格並輸入相鄰單元格中姓名的姓氏(本例中為 Elliot)。
- 選擇兩個單元格
- 將光標懸停在所選內容的右下部分。您會注意到光標變為加號圖標。
- 雙擊它(或單擊並向下拖動)。這將在單元格中為您提供一些結果(不太可能是您想要的結果)
- 單擊“自動填充選項”圖標。
- 點擊快速填充
這將為您提供可能是所有單元格中的姓氏的結果。
我說可能,因為 Flash Fill 在某些情況下可能不起作用。由於它取決於識別模式,因此它可能無法始終做到這一點。或者有時,它破譯的模式可能不是正確的模式。
在這種情況下,您應該在一個或兩個以上單元格中輸入預期結果,然後執行步驟 4-7。
在列中包含所有姓氏後,您可以根據這些姓氏對數據進行排序。
因此,您可以使用以下四種不同的方式按姓氏對數據進行排序。最好的方法是使用查找和替換技術,但如果你想讓你的結果動態化,公式方法是要走的路。
希望您發現本教程很有用。