本文將用到:OR(條件1,條件2,……) 結(jié)果為TRUE/FALSEFIND/SEARCH(查詢值,文本/數(shù)據(jù)) 結(jié)果為數(shù)值/報(bào)錯(cuò)ISERROR(報(bào)錯(cuò)判斷) 結(jié)果報(bào)錯(cuò)TRUE,正確FALSE多條件VLOOKUP(關(guān)鍵字,多列區(qū)域,位置,False) 豎表改為橫表 昨天看到求教將豎表改為橫表的問題,仔細(xì)觀察橫表或豎表,前兩列結(jié)構(gòu)完全一致,并不存在橫表豎表的結(jié)構(gòu)差異。而處理方法實(shí)際上是表2將表1前兩列去重后,再將第三列匯總而成。 前兩列去重并不難,只需使用到菜單欄'數(shù)據(jù)'中的'刪除重復(fù)值'功能即可實(shí)現(xiàn)。 關(guān)鍵在于將第三列多行數(shù)據(jù)匯總。 刪除重復(fù)項(xiàng)的去重操作 如何將多行數(shù)據(jù)匯總到一行,并且用符號間隔呢?我們用一個(gè)實(shí)際案例來說明。 將多行數(shù)據(jù)匯總為一行 思路:做兩列輔助列,在第一個(gè)輔助列中,將列表按照同一比賽、同一班級進(jìn)行累計(jì)匯總;在第二個(gè)輔助列進(jìn)行取數(shù)標(biāo)記;使用查詢函數(shù)將結(jié)果自動(dòng)鏈接到匯總表。 第一步:在第一個(gè)輔助列(綠色列E列)進(jìn)行分類累計(jì)匯總多行合并為一行的第1步 首先,先將數(shù)據(jù)進(jìn)行排序,按照比賽項(xiàng)目、班級升序排序; 接著,以第3行為例,判斷是否與第2行比賽項(xiàng)目、班級有不同: 若與比賽項(xiàng)目、班級任一不同,則不匯總,但要取此行D列數(shù)據(jù);若兩者均相同,則參與匯總,將上行匯總與此行數(shù)據(jù)用符號'&'及間隔逗號連接起來。 以單元格E3為例,公式為: IF(OR(B3<>B2,C3<>C2),D3,E2&','&D3) 綠色E列其他單元格,下拉填充即可。 第二步:在F列(橙色列)進(jìn)行判斷,是否此行為最終匯總行多行合并為一行的第2步 根據(jù)第一步的累計(jì)列表的原理可知,除非當(dāng)前行與上一行的的比賽項(xiàng)目或班級兩者有任一不同,E列停止累計(jì)匯總。并且下一行作為重新累計(jì)匯總的起始點(diǎn),是沒有間隔符號逗號的。因此,只要能夠判斷當(dāng)前行是否停止累計(jì),或下一行重新累計(jì),就可以判斷是否為同一產(chǎn)品和銷售渠道的最終匯總行。而判斷標(biāo)志為是否包含逗號。 以單元格F3為例,公式為: IF(ISERROR(FIND(',',E4))=TRUE,'Y','') 判斷是否為匯總行并做標(biāo)記的公式思路 公式為函數(shù)組合,F(xiàn)IND是查詢函數(shù),用來查詢下一行是否包含逗號,如果有逗號會(huì)返回一個(gè)數(shù)值,說明當(dāng)前行是不是最終匯總行,不取數(shù)行,不做標(biāo);如果沒有查詢到逗號則會(huì)報(bào)錯(cuò),則說明當(dāng)前行是最終匯總行,是取數(shù)行,做標(biāo)記'Y'。
第三步:將做標(biāo)記的數(shù)據(jù)表,通過查詢函數(shù)VLOOKUP鏈接到最終匯總表通過VLOOKUP多條件查詢鏈接到匯總表 函數(shù)Vlookup常規(guī)用法的關(guān)鍵字僅為一列,而案例中,需要滿足三個(gè)條件,因此將多列組成集合,進(jìn)行多條件匹配查詢。 關(guān)鍵列三個(gè)條件是: 1. 比賽項(xiàng)目相同 2. 班級相同 3. 輔助2標(biāo)記為”Y” 則以匯總表J3為例,公式為: =VLOOKUP(H3&I3&'Y',IF({1,0},B:B&C:C&F:F,E:E),2,FALSE)
|
|