亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
2030
2025-03-31
excel怎么根據人名提取相應的數據
Excle中A列是亂序,B列是人名排序,什么函數公式可以讓A列根據B列排序,且一一對應?也就是說,如下所示,A列是一種排序(A列中每個單元格中有個人名,這個人名對應B列中的人名),B列一種排列順序,C列的排列順序要對應B列中的人名(使A列和B列形成一一對應關系),除了復制粘貼可以用什么函數公式得到呢?
可以通過數組公式實現:
=INDEX($A$2:$A$5,LARGE(ISNUMBER(FIND(B2,$A$2:$A$5))*(ROW($A$2:$A$5)-1),1),1)
在單元格C2中輸入上述公式,按Ctrl+Shift+Enter組合鍵完成輸入。然后,拖動單元格C2右下解至C5即可完成公式復制填充。
如下所示:
其中,公式中的
FIND(B2,$A$2:$A$5)
在單元格區域A2:A5的每個單元格中查找單元格B2中的值在該單元格中出現的位置,沒有找到返回#VALUE!,找到則返回位置值,本例中的結果為:
{#VALUE!; #VALUE!; #VALUE!;3}
ISNUMBER函數將上面得到的數組轉換為數組:
{FALSE; FALSE; FALSE;TRUE}
同樣,公式中的
ROW($A$2:$A$5)-1
得到數組
{1;2;3;4}
上面的兩個數組相乘:
{FALSE; FALSE; FALSE;TRUE}*{1;2;3;4}
得到數組:
{ ; ; ;4}
上述數組傳遞給函數LARGE,獲取第1個最大值為:
4
這樣,公式變為:
INDEX($A$2:$A$5,4,1)
即獲取單元格區域A2:A5中第4行第1列的值,即為單元格A5中的值。
如果嫌數組公式麻煩,可以使用VBA編寫一個簡單的用戶自定義函數來解決。代碼如下:
Function GetDataByName(rng AsRange, Data As Range)
GetDataByName = Data.Find(rng).Value
End Function
然后,在工作表中像使用Excel內置公式一樣,在單元格C2中輸入公式:
=GetDataByName(B2,$A$2:$A$5)
向下拖至單元格C5即可。如下所示。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。