small用于不连续数组_Excel公式技巧19: 在方形区域内填充不重复的随机整数
學(xué)習(xí)Excel技術(shù),關(guān)注微信公眾號:
excelperfect
本文分享一個基于公式生成n×n隨機(jī)整數(shù)的解決方案,并且每個整數(shù)都是唯一的。例如,下圖1顯示了生成10行10列的不重復(fù)隨機(jī)整數(shù)。
圖1
解決方案
在單元格A1中輸入數(shù)組公式:
=SMALL(IF(FREQUENCY(($A2:$J$11,B1:$K1),ROW(INDIRECT("1:99"))-1)=0,ROW(INDIRECT("1:100"))-1),RANDBETWEEN(1,100-COUNTA($A2:$J$11,B1:$K1)))
向右向下拖拉至單元格J10。
通常,將此矩陣放置在工作表中的某位置,對于輸出結(jié)果的最左上角單元格的公式,引用的兩個單元格區(qū)域包括:
1)10×10的單元格區(qū)域從最左上角的單元格正下方的單元格開始,向下并向右延伸。
2)最左上角單元格右側(cè)的1×10單行單元格數(shù)組
這里都是相對/絕對混合引用。
工作原理
考慮使用FREQUENCY函數(shù),不僅可以生成通常使用COUNTIF函數(shù)能夠獲得的結(jié)果,而且還可以操作由多個單元格區(qū)域組成的引用。
讓我們從示例中隨便選擇一個公式,看看其是如何工作的。例如,在單元格C8中的公式:
=SMALL(IF(FREQUENCY(($A9:$J$11,D8:$K8),ROW(INDIRECT("1:99"))-1)=0,ROW(INDIRECT("1:100"))-1),RANDBETWEEN(1,100-COUNTA($A9:$J$11,D8:$K8)))
可以看到,公式引用的兩個單元格區(qū)域是:D8:$K8和$A9:$J$11,如下圖2所示。
圖2
公式中的:
FREQUENCY(($A9:$J$11,D8:$K8),ROW(INDIRECT("1:99"))-1)
是這種情況下COUNTIF函數(shù)有用的替代,它可以用于返回一個由單元格區(qū)域內(nèi)某些值個數(shù)組成的數(shù)組,而且執(zhí)行這些計數(shù)的單元格區(qū)域不是單個連續(xù)的區(qū)域,而是兩個這樣的區(qū)域。這里需要注意的是FREQUENCY函數(shù)的一個特點,即返回的數(shù)組比傳遞給它的元素數(shù)量多。因此,上面的結(jié)構(gòu)解析為:
{0;1;0;0;0;1;0;0;0;1;0;1;0;0;0;0;0;0;1;0;1;0;1;1;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;1;1;0;0;0;1;0;0;0;1;0;0;0;0;0;0;0;0;1;0;1;0;0;1;1;1;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;1;1;1;0;0;0;1;0;1;0;0;1;0}
顯然,我們對該數(shù)組中的零感興趣,因此在IF函數(shù)中將以上內(nèi)容設(shè)置等于為零,其中IF函函數(shù)的參數(shù)value_if_true的值是一個從0到99的整數(shù)數(shù)組,因此:
IF(FREQUENCY(($A9:$J$11,D8:$K8),ROW(INDIRECT("1:99"))-1)=0,ROW(INDIRECT("1:100"))-1)
轉(zhuǎn)換為:
IF({0;0;0;0;0;1;0;1;0;0;0;1;0;1;0;0;0;0;0;0;1;0;1;1;0;0;1;0;0;0;0;0;0;0;0;0;1;1;1;1;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;1;0;0;0;0;0;1;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;1;0;1;1;0;0;0;1;1;1;0;0;1}=0,ROW(INDIRECT("1:100"))-1)
轉(zhuǎn)換為:
IF({0;0;0;0;0;1;0;1;0;0;0;1;0;1;0;0;0;0;0;0;1;0;1;1;0;0;1;0;0;0;0;0;0;0;0;0;1;1;1;1;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;1;0;0;0;0;0;1;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;1;0;1;1;0;0;0;1;1;1;0;0;1}=0,{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99})
轉(zhuǎn)換為:
IF({TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE},{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99})
結(jié)果為:
{0;1;2;3;4;FALSE;6;FALSE;8;9;10;FALSE;12;FALSE;14;15;16;17;18;19;FALSE;21;FALSE;FALSE;24;25;FALSE;27;28;29;30;31;32;33;34;35;FALSE;FALSE;FALSE;FALSE;40;41;42;43;FALSE;FALSE;46;47;48;49;50;51;52;53;54;55;56;57;FALSE;59;60;61;FALSE;63;64;FALSE;66;67;68;69;70;FALSE;FALSE;73;74;75;76;77;FALSE;79;80;81;82;83;84;85;86;FALSE;88;FALSE;FALSE;91;92;93;FALSE;FALSE;FALSE;97;98;FALSE}
現(xiàn)在,成功地創(chuàng)建了一個不在公式單元格下面的行或右邊的單元格中的所有值組成的數(shù)組,剩下的就是從此數(shù)組中隨機(jī)選擇一個數(shù)值。
實現(xiàn)這一目標(biāo)的一種方法是將上述數(shù)組傳遞給SMALL函數(shù),并指定參數(shù)k的值為合適的隨機(jī)數(shù)。由于數(shù)組中的數(shù)字元素數(shù)等于100減去所引用的區(qū)域的元素數(shù),因此可以將其用于RANDBETWEEN函數(shù)的top參數(shù):
100-COUNTA($A9:$J$11,D8:$K8)
使用了COUNTA函數(shù),可用于處理多個單元格區(qū)域。因此:
RANDBETWEEN(1,100-COUNTA($A9:$J$11,D8:$K8))
轉(zhuǎn)換為:
RANDBETWEEN(1,100-27)
其中的27等于單元格區(qū)域$A9:$J$11中的20個非空元素加上D8:$K8中的7個非空元素。(注意,將A1:J10區(qū)域周邊的無關(guān)單元格有意地留為空白單元格非常重要)
綜上,公式轉(zhuǎn)換為:
=SMALL({0;1;2;3;4;FALSE;6;FALSE;8;9;10;FALSE;12;FALSE;14;15;16;17;18;19;FALSE;21;FALSE;FALSE;24;25;FALSE;27;28;29;30;31;32;33;34;35;FALSE;FALSE;FALSE;FALSE;40;41;42;43;FALSE;FALSE;46;47;48;49;50;51;52;53;54;55;56;57;FALSE;59;60;61;FALSE;63;64;FALSE;66;67;68;69;70;FALSE;FALSE;73;74;75;76;77;FALSE;79;80;81;82;83;84;85;86;FALSE;88;FALSE;FALSE;91;92;93;FALSE;FALSE;FALSE;97;98;FALSE},RANDBETWEEN(1,73))
得到所需的結(jié)果。
小結(jié)
FREQUENCY函數(shù)、COUNTA函數(shù)可以操作多個單元格區(qū)域。
注:本技巧整理自excelxor.com,有興趣的朋友對照原文研讀,收獲更豐。
總結(jié)
以上是生活随笔為你收集整理的small用于不连续数组_Excel公式技巧19: 在方形区域内填充不重复的随机整数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设置wifi路由器如何用手机设置wi
- 下一篇: 专业又易用的视频相机专业拍视频相机推荐