亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本次的練習(xí)是:如下圖1所示,單元格區(qū)域A2:E5中包含一系列值和空單元格,其中有重復(fù)值,要求從該單元格區(qū)域中生成按字母順序排列的不重復(fù)值列表,如圖1中G列所示。

圖1

在單元格G1中編寫一個(gè)公式,下拉生成所要求的列表。

先不看答案,自已動(dòng)手試一試。

公式

在單元格G1中的公式為:

=IF(ROWS($1:1)>$H$1,””,INDEX(Arry4,MATCH(SMALL(IF(FREQUENCY(IF(Range1<>””,MATCH(Range1,Arry4,0)),Arry1),COUNTIF(Range1,”<“&Arry4)),ROWS($1:1)),IF(Arry4<>””,COUNTIF(Range1,”<“&Arry4)),0)))

下拉直至出現(xiàn)空單元格為止。

在單元格H1中的公式為:

=SUMPRODUCT((Range1<>””)/COUNTIF(Range1,Range1&””))

公式中使用了5個(gè)名稱,分別為:

名稱:Range1

引用位置:=$A$2:$E$5

名稱:Arry1

引用位置:=ROW(INDIRECT(“1:”&COLUMNS(Range1)*ROWS(Range1)))

名稱:Arry2

引用位置:=1+INT((Arry1-1)/COLUMNS(Range1))

名稱:Arry3

引用位置:=1+MOD(Arry1-1,COLUMNS(Range1))

名稱:Arry4

引用位置:=INDEX(Range1,N(IF(1,Arry2)),N(IF(1,Arry3)))

公式解析

1. 在單元格H1中的公式比較直接,是一個(gè)獲取列表區(qū)域唯一值數(shù)量的標(biāo)準(zhǔn)公式:

=SUMPRODUCT((Range1<>””)/COUNTIF(Range1,Range1&””))

轉(zhuǎn)換為:

=SUMPRODUCT(({“Due”,””,”Otto”,””,”Otto”;””,””,””,””,”Tre”;”Sei”,”Cinque”,””,”Quattro”,”Otto”;”Due”,””,””,”Quattro”,”Otto”}<>””)/COUNTIF(Range1,Range1&””))

轉(zhuǎn)換為:

=SUMPRODUCT({TRUE,FALSE,TRUE,FALSE,TRUE;FALSE,FALSE,FALSE,FALSE,TRUE;TRUE,TRUE,FALSE,TRUE,TRUE;TRUE,FALSE,FALSE,TRUE,TRUE}/COUNTIF(Range1,Range1&””))

接著解析COUNTIF部分,該部分計(jì)算Range1中每個(gè)條目在該區(qū)域內(nèi)出現(xiàn)的次數(shù):

=SUMPRODUCT({TRUE,FALSE,TRUE,FALSE,TRUE;FALSE,FALSE,FALSE,FALSE,TRUE;TRUE,TRUE,FALSE,TRUE,TRUE;TRUE,FALSE,FALSE,TRUE,TRUE}/{2,9,4,9,4;9,9,9,9,1;1,1,9,2,4;2,9,9,2,4})

除法運(yùn)算后:

=SUMPRODUCT({0.5,0,0.25,0,0.25;0,0,0,0,1;1,1,0,0.5,0.25;0.5,0,0,0.5,0.25})

結(jié)果為:

6

2. 在單元格G1的主公式中:

=IF(ROWS($1:1)>$H$1,””,

如果公式向下拖拉的行數(shù)超過(guò)單元格H1中的數(shù)值6,則返回空值。

3. 下面重點(diǎn)看看公式中的:

INDEX(Arry4,MATCH(SMALL(IF(FREQUENCY(IF(Range1<>””,MATCH(Range1,Arry4,0)),Arry1),COUNTIF(Range1,”<“&Arry4)),ROWS($1:1)),IF(Arry4<>””,COUNTIF(Range1,”<“&Arry4)),0))

實(shí)際上,這是提取唯一且按字母順序排列的值的標(biāo)準(zhǔn)公式構(gòu)造,唯一區(qū)別是提取值的區(qū)域不是單列、一維區(qū)域,而是二維區(qū)域。然而,在原理上該技術(shù)是相同的:首先將二維區(qū)域轉(zhuǎn)換成一維區(qū)域,然后應(yīng)用通用的結(jié)構(gòu)來(lái)獲取我們想要的結(jié)果。

上述公式構(gòu)造中的Arry4為:

INDEX(Range1,N(IF(1,Arry2)),N(IF(1,Arry3)))

這里,只是簡(jiǎn)單地索引二維區(qū)域中的每個(gè)元素。然而,我們得到的結(jié)果數(shù)組將是一維數(shù)組且包含的元素與二維區(qū)域中的元素完全相同。

為了解構(gòu)Arry4,我們需要首先查看Arry2和Arry3,它們分別對(duì)應(yīng)著INDEX函數(shù)的參數(shù)row_num和參數(shù)column_num。而它們都引用了Arry1:

=ROW(INDIRECT(“1:”&COLUMNS(Range1)*ROWS(Range1)))

名稱Range1代表的區(qū)域有4行5列,因此轉(zhuǎn)換為:

ROW(INDIRECT(“1:”&5*4))

得到:

{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20}

再看Arry2:

=1+INT((Arry1-1)/COLUMNS(Range1))

轉(zhuǎn)換為:

1+INT(({1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20}-1)/5)

轉(zhuǎn)換為:

1+INT({0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19}/5)

轉(zhuǎn)換為:

1+INT({0;0.2;0.4;0.6;0.8;1;1.2;1.4;1.6;1.8;2;2.2;2.4;2.6;2.8;3;3.2;3.4;3.6;3.8})

轉(zhuǎn)換為:

1+{0;0;0;0;0;1;1;1;1;1;2;2;2;2;2;3;3;3;3;3}

得到:

{1;1;1;1;1;2;2;2;2;2;3;3;3;3;3;4;4;4;4;4}

接著看Arry3:

=1+MOD(Arry1-1,COLUMNS(Range1))

轉(zhuǎn)換為:

1+MOD({0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19},5)

轉(zhuǎn)換為:

1+{0;1;2;3;4;0;1;2;3;4;0;1;2;3;4;0;1;2;3;4}

得到:

{1;2;3;4;5;1;2;3;4;5;1;2;3;4;5;1;2;3;4;5}

再回到Arry4。可以轉(zhuǎn)換為:

INDEX(Range1,N(IF(1,{1;1;1;1;1;2;2;2;2;2;3;3;3;3;3;4;4;4;4;4})),N(IF(1,{1;2;3;4;5;1;2;3;4;5;1;2;3;4;5;1;2;3;4;5})))

這里使用了強(qiáng)制INDEX返回?cái)?shù)組的技術(shù),詳情可參閱《Excel公式技巧03:INDEX函數(shù),給公式提供數(shù)組》。上述公式可轉(zhuǎn)換為:

INDEX(Range1,{1;1;1;1;1;2;2;2;2;2;3;3;3;3;3;4;4;4;4;4},{1;2;3;4;5;1;2;3;4;5;1;2;3;4;5;1;2;3;4;5})

現(xiàn)在應(yīng)該可以看清楚為INDEX函數(shù)的每個(gè)參數(shù)傳遞數(shù)組的原因了,因?yàn)樯鲜龉降葍r(jià)于執(zhí)行下列每個(gè)公式:

INDEX(Range1,1,1)

INDEX(Range1,1,2)

INDEX(Range1,1,3)

INDEX(Range1,1,4)

INDEX(Range1,1,5)

INDEX(Range1,2,1)

INDEX(Range1,2,2)

INDEX(Range1,4,5)

因此,Arry4的結(jié)果為:

{“Due”;””;”Otto”;””;”Otto”;””;””;””;””;”Tre”;”Sei”;”Cinque”;””;”Quattro”;”Otto”;”Due”;””;””;”Quattro”;”Otto”}

而Excel將Range1解析為:

{“Due”,””,”Otto”,””,”Otto”;””,””,””,””,”Tre”;”Sei”,”Cinque”,””,”Quattro”,”Otto”;”Due”,””,””,”Quattro”,”Otto”}

我們可以看到這兩個(gè)數(shù)組中的值沒有任何區(qū)別。唯一不同的是,Range1包含一個(gè)4行5列的二維數(shù)組,而Arry4是通過(guò)簡(jiǎn)單地將Range1中的每個(gè)元素進(jìn)行索引而得出的,實(shí)際上是20行1列的一維區(qū)域。

好了,現(xiàn)在就可以使用我們掌握的常用的適用于一維區(qū)域的技術(shù)來(lái)操作該數(shù)組了!

4. 再看看主公式中的:

INDEX(Arry4,MATCH(SMALL(IF(FREQUENCY(IF(Range1<>””,MATCH(Range1,Arry4,0)),Arry1),COUNTIF(Range1,”<“&Arry4)),ROWS($1:1)),IF(Arry4<>””,COUNTIF(Range1,”<“&Arry4)),0))

先看看這部分:

IF(Range1<>””,MATCH(Range1,Arry4,0))

轉(zhuǎn)換為:

IF({TRUE,FALSE,TRUE,FALSE,TRUE;FALSE,FALSE,FALSE,FALSE,TRUE;TRUE,TRUE,FALSE,TRUE,TRUE;TRUE,FALSE,FALSE,TRUE,TRUE},MATCH(Range1,Arry4,0))

使用Range1和Arry4替換,得到:

IF({TRUE,FALSE,TRUE,FALSE,TRUE;FALSE,FALSE,FALSE,FALSE,TRUE;TRUE,TRUE,FALSE,TRUE,TRUE;TRUE,FALSE,FALSE,TRUE,TRUE},MATCH({“Due”,””,”Otto”,””,”Otto”;””,””,””,””,”Tre”;”Sei”,”Cinque”,””,”Quattro”,”Otto”;”Due”,””,””,”Quattro”,”Otto”},{“Due”;””;”Otto”;””;”Otto”;””;””;””;””;”Tre”;”Sei”;”Cinque”;””;”Quattro”;”Otto”;”Due”;””;””;”Quattro”;”Otto”},0))

可轉(zhuǎn)換為:

IF({TRUE,FALSE,TRUE,FALSE,TRUE;FALSE,FALSE,FALSE,FALSE,TRUE;TRUE,TRUE,FALSE,TRUE,TRUE;TRUE,FALSE,FALSE,TRUE,TRUE},{1,#N/A,3,#N/A,3;#N/A,#N/A,#N/A,#N/A,10;11,12,#N/A,14,3;1,#N/A,#N/A,14,3})

得到:

{1,FALSE,3,FALSE,3;FALSE,FALSE,FALSE,FALSE,10;11,12,FALSE,14,3;1,FALSE,FALSE,14,3}

這個(gè)數(shù)組是FREQUENCY函數(shù)的第一個(gè)參數(shù),而Arry1是其第二個(gè)參數(shù):

FREQUENCY(IF(Range1<>””,MATCH(Range1,Arry4,0)),Arry1)

可轉(zhuǎn)換為:

FREQUENCY({1,FALSE,3,FALSE,3;FALSE,FALSE,FALSE,FALSE,10;11,12,FALSE,14,3;1,FALSE,FALSE,14,3},Arry1)

將Arry1代入:

FREQUENCY({1,FALSE,3,FALSE,3;FALSE,FALSE,FALSE,FALSE,10;11,12,FALSE,14,3;1,FALSE,FALSE,14,3},{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20})

生成數(shù)組:

{2;0;4;0;0;0;0;0;0;1;1;1;0;2;0;0;0;0;0;0;0}

這是我們使用的相當(dāng)標(biāo)準(zhǔn)的技術(shù):上述數(shù)組中非零值的位置表示在該區(qū)域內(nèi)每個(gè)不同值在該數(shù)組中的首次出現(xiàn),因此提供了一種僅返回唯一值的方法。將該數(shù)組作為IF函數(shù)的條件:

IF(FREQUENCY(IF(Range1<>””,MATCH(Range1,Arry4,0)),Arry1),COUNTIF(Range1,”<“&Arry4))

轉(zhuǎn)換為:

IF({2;0;4;0;0;0;0;0;0;1;1;1;0;2;0;0;0;0;0;0;0},COUNTIF(Range1,”<“&Arry4))

COUNTIF函數(shù)用于確定字母排序:

IF({2;0;4;0;0;0;0;0;0;1;1;1;0;2;0;0;0;0;0;0;0},{1;0;3;0;3;0;0;0;0;10;9;0;0;7;3;1;0;0;7;3})

結(jié)果為:

{1;FALSE;3;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;10;9;0;FALSE;7;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

這樣,INDEX函數(shù)部分現(xiàn)在變成:

INDEX(Arry4,MATCH(SMALL({1;FALSE;3;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;10;9;0;FALSE;7;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE},ROWS($1:1)),IF(Arry4<>””,COUNTIF(Range1,”<“&Arry4)),0))

對(duì)于SMALL函數(shù),其參數(shù)k的值由ROWS($1:1)指定,在單元格G1中為1,因此上述公式轉(zhuǎn)換為:

INDEX(Arry4,MATCH(0,IF(Arry4<>””,COUNTIF(Range1,”<“&Arry4)),0))

轉(zhuǎn)換為:

INDEX(Arry4,MATCH(0,IF(Arry4<>””,{1;0;3;0;3;0;0;0;0;10;9;0;0;7;3;1;0;0;7;3},0))

轉(zhuǎn)換為:

INDEX(Arry4,MATCH(0,{1;FALSE;3;FALSE;3;FALSE;FALSE;FALSE;FALSE;10;9;0;FALSE;7;3;1;FALSE;FALSE;7;3},0))

轉(zhuǎn)換為:

INDEX(Arry4,12)

將Arry4代入:

INDEX({“Due”;””;”Otto”;””;”Otto”;””;””;””;””;”Tre”;”Sei”;”Cinque”;””;”Quattro”;”Otto”;”Due”;””;””;”Quattro”;”Otto”},12)

得到結(jié)果:

Cinque

小結(jié):

本文至少?gòu)?fù)習(xí)/使用了以下公式技術(shù):

1. 統(tǒng)計(jì)列表區(qū)域中唯一值數(shù)量。

2. 將二維區(qū)域轉(zhuǎn)換成一維區(qū)域。

3. 強(qiáng)制INDEX返回?cái)?shù)組。

4. 確定字母排序。

5. 提取唯一值并按字母排序。

分享到:
標(biāo)簽:excel公式怎么用 excel函數(shù)公式 excel常用函數(shù) Excel教程
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定