作為管理或者統計工作者,往往從各個部門收集上來的數據填寫非常不規范,比如下:
公式解析
總公式“=LOOKUP(1,0/FIND($D$2:$D$7,A2),$E$2:$E$7)”
其中:
FIND($D$2:$D$7,A2)
FIND函數返回一個字符串在另一個字符串中的起始位置,如果找不到要查找的字符或字符串,返回錯誤值#VALUE!。
本示例中的含義是:依次查找$D$2:$D$7區域中的關鍵字在A2字符串中起始位置,如果查找到了,就返回關鍵字在A2字符串中的起始位置,如果查找不到,就返回錯誤值#VALUE!。
所以,本部分函數,在本示例中的返回值是由起始位置與錯誤值#VALUE!組成的數組(為描述方便,稱為數組1):
{#VALUE;4;#VALUE;#VALUE;#VALUE;#VALUE}
0/FIND($D$2:$D$7,A2)
用0除以數組1,得到由0和錯誤值#VALUE!組成的新數組(數組2):
{#VALUE;0;#VALUE;#VALUE;#VALUE;#VALUE}
LOOKUP(1,0/FIND($D$2:$D$7,A2),$E$2:$E$7)
LOOKUP函數用1作為查找值,在數組2中,所有的數字都小于1,所以按照小于1的最大值0進行匹配,匹配出第三個參數$E$2:$E$7數組中與數組2中0對應位置的值,即E3單元格的數據。
附函數語法
LOOKUP函數:
LOOKUP(lookup_value, lookup_vector, [result_vector])
這是LOOKUP 函數向量形式語法,具有以下參數:
lookup_value ? ?必需。 LOOKUP 在第一個向量中搜索的值。 Lookup_value 可以是數字、文本、邏輯值、名稱或對值的引用。
lookup_vector ? ?必需。 只包含一行或一列的區域。 lookup_vector 中的值可以是文本、數字或邏輯值。
result_vector ? ?可選。只包含一行或一列的區域。result_vector 參數必須與 lookup_vector 參數大小相同。其大小必須相同。
FIND函數:
FIND(find_text, within_text, [start_num])
FIND 和 FINDB 函數語法具有下列參數:
find_text ? ?必需。 要查找的文本。
within_text ? ?必需。 包含要查找文本的文本。
start_num ? ?可選。 指定開始進行查找的字符。 within_text 中的首字符是編號為 1 的字符。 如果省略 start_num,則假定其值為 1。