內(nèi)容來源于ExcelHome論壇,,本人只是進(jìn)行了整理,。通過本例加深了對(duì)COUNT函數(shù)、TEXT函數(shù),、INDIRECT函數(shù)和R1C1樣式引用的理解,,同時(shí)對(duì)靈活運(yùn)用ISNUMBER函數(shù)有了更深的了解。
問題是這樣的: 請(qǐng)從下圖所示的和值表中查找一個(gè)號(hào)碼,,號(hào)碼順序不限,,比如,圖示和值表區(qū)域中的“138”,,要求不論查找318,、381、138,、183,、813還是831,,都能在第10行第4列找到這個(gè)號(hào)碼,并且: (1)找出該號(hào)碼對(duì)應(yīng)的行列號(hào)(上面已說了),; (2)該位置的號(hào)碼,; (3)該位置上一行的號(hào)碼、下一行的號(hào)碼,; (4)這3個(gè)號(hào)碼中的不重復(fù)號(hào)碼,。 解決辦法如下: 第1個(gè)問題。在C29單元格中輸入數(shù)組公式:{=MAX((SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B4:K25,MID(B29,1,1),"",1),MID(B29,2,1),"",1),MID(B29,3,1),"",1)="")*(ROW(4:25)*100+COLUMN(B:K)))} 解釋:在和值表區(qū)域B4:K25所有單元格中,,逐個(gè)單元格進(jìn)行比較,,分別查找所要查找號(hào)碼中的3個(gè)號(hào)碼(本例中即3、1,、8)是否在當(dāng)前單元格中,,如果在其中,則把找到的第1個(gè)位置的該號(hào)碼替換為空字符串(""),。注意,,不能一次全部替換為空字符串,因?yàn)?,一個(gè)單元格的3個(gè)號(hào)碼中,,可能有2個(gè)以上的相同號(hào)碼,如220,、333,。這樣,一次替換一個(gè)號(hào)碼,,經(jīng)過3次替換后,如果為空字符串,,說明當(dāng)前單元格中的號(hào)碼與欲查找的號(hào)碼相同(順序不一定一致),,此時(shí),(SUBSTITUTE(...)="")為TRUE,,與后面數(shù)值相乘時(shí)等同1處理,,否則為FALSE,等同0,。后面的(ROW(4:25)*100+COLUMN(B:K)))就是區(qū)域中各個(gè)單元格的行列號(hào)的數(shù)值,。前后相乘的結(jié)果,要么為0,,要么為找到的單元格所對(duì)應(yīng)的行列號(hào)的數(shù)值,。這個(gè)數(shù)組中只有一個(gè)大于0的值,其余都是0,,所以,,數(shù)組中的最大值就是該號(hào)碼對(duì)應(yīng)的行列號(hào),。 第2個(gè)問題。在D29單元格中輸入公式:=INDIRECT(TEXT(C29,"!R0C00"),0),,第2個(gè)參數(shù)0(或FLASH)表示為R1C1樣式的引用,。 第3個(gè)問題。 在E29單元格中輸入公式:=INDIRECT(TEXT(C29-100,"!R0C00"),0) 在F29單元格中輸入公式:=INDIRECT(TEXT(C29+100,"!R0C00"),0) 第4個(gè)問題,。在G29單元格中輸入數(shù)組公式:{=IF(COUNT(FIND(0,D29:F29))>0,0,"") & SUBSTITUTE(SUM(ISNUMBER(FIND(ROW($1:$9),D29 & E29 & F29))*ROW($1:$9)*10^(9-ROW($1:$9))),0,"")} COUNT函數(shù)計(jì)數(shù)時(shí),,空白單元格、邏輯值,、文字或錯(cuò)誤值都將被忽略,。公式前半部分(加粗部分)判斷灰色區(qū)域3個(gè)單元格中是否至少有一個(gè)單元格中包括0,有為0,,沒有則為空字符串,。公式后半部分中,順序用1至9這9個(gè)數(shù)字在灰色區(qū)域3個(gè)單元格連接生成的文本中進(jìn)行查找,,如果有,,則ISNUMBER(FIND(...))為TRUE,與后面的ROW($1:$9)*10^(9-ROW($1:$9))相乘,;如果沒有,,則ISNUMBER(FIND(...))為FALSE,與后面相乘后的結(jié)果還是0,。本例中,,用SUM(...)求和后的結(jié)果為123000080,通過SUBSTITUTE()函數(shù)把所有0用空字符串替換掉,,還剩1238四個(gè)號(hào)碼,,前面加一個(gè)0(原因前面已說過),最終結(jié)果為01238,。
|
|