這可能是不可能的,但我正在嘗試創建一個棒球守備陣容生成器,它具有聯盟提供的一些限制(即必須在內場打兩次,在外場打兩次,在任何位置都不能重復)。我認為使用任何編程語言這將是相當簡單的任務,但我正在為我 70 歲的叔叔設計這個,他基本上只能使用沒有宏的 excel。所以我不能蠻力解決這個問題,我認為我對問題背后的數學理解不夠深入,甚至不知道是否有一個 Excel 公式化的解決方案。
從本質上講,它是一個數獨創建者和求解器,在行或列中沒有重復。通過按位置對個人進行排名,我對內場/外場部分有一個好的解決方案。
使用 F9 遞回計算對于解決方案來說是可以的,因為這只是選項選單中的更改,但上次我向他發送宏時,他的大學 MS 帳戶不允許他運行它或更改設定。
好吧,我有很多其他資訊,并且已經接近使用大型嵌套 IF 的解決方案,但是這種相對蠻力的方法似乎非常愚蠢,并沒有提供很好的解決方案。
謝謝你的幫助!
uj5u.com熱心網友回復:
好吧,如果您的叔叔可以訪問 Excel 365(聽起來像是一個很大的 if),您可以使用排序來洗掉已在給定行或列中使用的玩家,例如從 B2 向下復制:
=LET(range,$L$2:$L$27,
choice,IF(COUNTIF(B$1:B1,range) COUNTIF($A2:A2,range)=0,range),
count,COUNT(choice),
sort,SORT(choice),
INDEX(sort,RANDBETWEEN(1,count)))

如果給球員的是名字而不是數字,你可以試試
=LET(range,$L$2:$L$27,
choice,IF(COUNTIF(B$1:B1,range) COUNTIF($A2:A2,range)=0,range),
count,SUM(--ISTEXT(choice)),
sort,SORT(choice),
INDEX(sort,RANDBETWEEN(1,count)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/435104.html
