在B1單元格中輸入下列公式:=LOOKUP(32767,FIND(D$1:D$3,A1),D$1:D$3)。再拖動填充到B2~B4單元格。
解析:
因為這道題把城市的名稱儲存在同一列中,我們容易聯想起LOOKUP函式的向量形式,它可以在一個向量中尋找某個值,返回另一個向量中處於同一位置的值。
很顯然,D$1:D$3,也就是向量 {廣州,上海,北京},構成了第三個引數result_vector。我們需要構建第二個引數lookup_vector。
這道題要求從公司名稱中提取地名,例如從“北京市東湖五金廠”中提取“北京”,我們容易聯想起FIND函式。它可以在一個字串中查詢另一個字串,並且返回後者在前者中的位置,如果找不到,會返回#VALUE!錯誤。
FIND函式的第一個引數find_text,可以是向量或陣列。我們可以用FIND函式,依次在A1單元格中查詢“廣州”、“上海”、“北京”的位置,即FIND(D$1:D$3,A1)。很明顯,FIND函式在這裡找不到“廣州”或“上海”,但是可以找到“北京”並返回其位置1。於是,查詢結果會臨時儲存為一個向量 {#VALUE!,#VALUE!,1}。這個向量可以充當LOOKUP函式的第二個引數lookup_vector。
現在,我們把目光放到LOOKUP函式的第一個引數lookup_value。
我們要在此基礎上考慮容錯性的問題。假如A1單元格不是“北京市東湖五金廠”,而是“中國聯合通訊集團北京分公司”,也就是說,“北京”的位置不一定是1。窮舉一下,由於在Excel中,每個單元格最多可以輸入32767個字元,而且“北京”可能在任意一個位置,那麼“北京”的位置將會是1~32766。
因為“北京”的位置可能是1~32766之間的任意整數,為了能讓LOOKUP找到“北京”所在的位置,我們必須把第一個引數lookup_value設為超過32766的一個整數,32767正好合適。
參考資料:
[1] LOOKUP函式。https://support.office.com/zh-cn/article/LOOKUP-函式-446D94AF-663B-451D-8251-369D5E3864CB
[2] FIND、FINDB函式。https://support.office.com/zh-cn/article/FIND、FINDB-函式-C7912941-AF2A-4BDF-A553-D0D89B0A0628
在B1單元格中輸入下列公式:=LOOKUP(32767,FIND(D$1:D$3,A1),D$1:D$3)。再拖動填充到B2~B4單元格。
解析:
因為這道題把城市的名稱儲存在同一列中,我們容易聯想起LOOKUP函式的向量形式,它可以在一個向量中尋找某個值,返回另一個向量中處於同一位置的值。
LOOKUP函式的向量形式的語法為:LOOKUP(lookup_value, lookup_vector, [result_vector])lookup_value 必需。 LOOKUP 在第一個向量中搜索的值。 Lookup_value 可以是數字、文字、邏輯值、名稱或對值的引用。lookup_vector 必需。 只包含一行或一列的區域。 lookup_vector 中的值可以是文字、數字或邏輯值。重要: lookup_vector 中的值必須按升序排列:..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE;否則,LOOKUP 可能無法返回正確的值。 文字不區分大小寫。result_vector 可選。只包含一行或一列的區域。result_vector 引數必須與 lookup_vector 引數大小相同。其大小必須相同。很顯然,D$1:D$3,也就是向量 {廣州,上海,北京},構成了第三個引數result_vector。我們需要構建第二個引數lookup_vector。
這道題要求從公司名稱中提取地名,例如從“北京市東湖五金廠”中提取“北京”,我們容易聯想起FIND函式。它可以在一個字串中查詢另一個字串,並且返回後者在前者中的位置,如果找不到,會返回#VALUE!錯誤。
FIND函式的語法為:FIND(find_text, within_text, [start_num])find_text 必需。 要查詢的文字。within_text 必需。 包含要查詢文字的文字。start_num 可選。 指定開始進行查詢的字元。 within_text 中的首字元是編號為 1 的字元。 如果省略 start_num,則假定其值為 1。FIND函式的第一個引數find_text,可以是向量或陣列。我們可以用FIND函式,依次在A1單元格中查詢“廣州”、“上海”、“北京”的位置,即FIND(D$1:D$3,A1)。很明顯,FIND函式在這裡找不到“廣州”或“上海”,但是可以找到“北京”並返回其位置1。於是,查詢結果會臨時儲存為一個向量 {#VALUE!,#VALUE!,1}。這個向量可以充當LOOKUP函式的第二個引數lookup_vector。
現在,我們把目光放到LOOKUP函式的第一個引數lookup_value。
這個函式有一個屬性:如果 LOOKUP 函式找不到 lookup_value,則該函式會與 lookup_vector 中小於或等於 lookup_value 的最大值進行匹配。這個函式還有一個隱藏屬性:它會忽略第二個引數lookup_vector中的錯誤資訊,所以對於#VALUE!這樣的錯誤資訊,它只會視而不見。我們要在此基礎上考慮容錯性的問題。假如A1單元格不是“北京市東湖五金廠”,而是“中國聯合通訊集團北京分公司”,也就是說,“北京”的位置不一定是1。窮舉一下,由於在Excel中,每個單元格最多可以輸入32767個字元,而且“北京”可能在任意一個位置,那麼“北京”的位置將會是1~32766。
因為“北京”的位置可能是1~32766之間的任意整數,為了能讓LOOKUP找到“北京”所在的位置,我們必須把第一個引數lookup_value設為超過32766的一個整數,32767正好合適。
參考資料:
[1] LOOKUP函式。https://support.office.com/zh-cn/article/LOOKUP-函式-446D94AF-663B-451D-8251-369D5E3864CB
[2] FIND、FINDB函式。https://support.office.com/zh-cn/article/FIND、FINDB-函式-C7912941-AF2A-4BDF-A553-D0D89B0A0628