今天給大家分享一下如何使用函數(shù)尋找總和為某個(gè)值的組合。
我舉個(gè)例子。
如下圖所示,A~B列是數(shù)據(jù)源,A列是發(fā)票號(hào),B列是發(fā)票金額。現(xiàn)在需要尋找總和為F1單元格指定值,比如20,089的發(fā)票組合。
關(guān)于這個(gè)問(wèn)題,很久以前給大家分享過(guò)規(guī)劃求解的方法;今天再給大家分享一下函數(shù)的方法。
在C2單元格輸入以下公式,并復(fù)制到C2:C21區(qū)域。
=IF(SUM(C$2:C$21)=F$1,C2,B2*RANDBETWEEN(0,1))
公式輸入后系統(tǒng)會(huì)提示循環(huán)引用,這是由于公式引用了公式所在單元格的值,不過(guò)別管他,誰(shuí)稀罕愛她。
依次點(diǎn)擊Excel左上角的「文件」→「選項(xiàng)」命令,打開文件選項(xiàng)對(duì)話框,切換到「公式」選項(xiàng)卡,選中「啟動(dòng)迭代計(jì)算」復(fù)選框,將「最多迭代次數(shù)」設(shè)置為30000!复_定」后關(guān)閉對(duì)話框。
此時(shí)C列公式會(huì)自動(dòng)重算,重算結(jié)果非0的項(xiàng)即為發(fā)票組合。可以在F2單元格輸入一個(gè)SUM函數(shù)公式進(jìn)行驗(yàn)證。
給大家解釋一下公式的意思。
=IF(SUM(C$2:C$21)=F$1,C2,B2*RANDBETWEEN(0,1))
公式首先判斷C2:C21區(qū)域的總和是否等于F1單元格指定的目標(biāo)值,如果相等,則返回C2自身的值,否則,返回B2單元格發(fā)票金額乘以0或1。當(dāng)乘以0時(shí),結(jié)果返回0,表示該發(fā)票金額未被選中,當(dāng)乘以1時(shí),返回發(fā)票金額自身,表示被選中。
由于公式引用了公式所在單元格的值,比如C2單元格的公式SUM(C$2:C$21),也就會(huì)觸發(fā)循環(huán)引用。此時(shí)我們啟用迭代計(jì)算,系統(tǒng)會(huì)反復(fù)計(jì)算該公式,直至停止迭代的條件成立(C2:C21的總和等于目標(biāo)值),或迭代次數(shù)用盡。
就這么回事。
最后留個(gè)練習(xí)題。
如上圖所示,已知總和25,由10個(gè)數(shù)值構(gòu)成,每個(gè)數(shù)值大于等于1,且小于等于5,請(qǐng)列出這10個(gè)數(shù)值的任一組合。
參考答案:
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。