MS Excel: ตัวสร้างตัวเลขสุ่มที่ไม่ซ้ำกันภายในช่วง


0

ฉันค้นหาคำถามที่คล้ายกัน แต่หาไม่พบ ..

ฉันต้องการสร้าง 10 กลุ่มจากตัวเลขตั้งแต่ 1-60 (รวมทั้งคู่) โดยแต่ละกลุ่มจะมีตัวเลขสุ่มและไม่ซ้ำกัน ฉันจะทำสิ่งนี้ใน excel ได้อย่างไร


สิ่งเหล่านี้อาจเป็นประโยชน์: stackoverflow.com/q/5753063/657668 superuser.com/q/277386/76571
Excellll

คำตอบ:


1

วิธีใช้งาน

  1. เปิดตัวแก้ไข Excel & VBA ( Alt+ F11)
  2. ใส่รหัสด้านล่างภายใต้ Sheet1
  3. กลับไปที่ Excel และเลือกช่วงที่คุณต้องการเพื่อเติมตัวเลขแบบสุ่มและไม่ซ้ำ
  4. ดำเนินการแมโคร ( Alt+ F8)

Sub randomNumbers()
    Low = Application.InputBox("Enter first valid value", Type:=1)
    High = Application.InputBox("Enter last valid value", Type:=1)
    Selection.Clear
    For Each cell In Selection.Cells
        If WorksheetFunction.CountA(Selection) = (High - Low + 1) Then Exit For
        Do
            rndNumber = Int((High - Low + 1) * Rnd() + Low)
        Loop Until Selection.Cells.Find(rndNumber, LookIn:=xlValues, lookat:=xlWhole) Is Nothing
        cell.Value = rndNumber
    Next
End Sub

ไฟล์ Excel ที่จะพิสูจน์

ฉันรักโซลูชันขนาดเล็กและเรียบง่ายเหล่านั้นมาก


มันอาจเป็นไปได้ที่ฟังก์ชั่นปัญญาของ Excel เท่านั้น: =RANDBETWEEN(1,60)และอาจเป็นฟังก์ชั่นอาเรย์? แต่ฉันไม่รู้วิธีการตรวจสอบรายการที่ซ้ำกัน
nixda


ดีที่คุณกล่าวถึงแล้วในความคิดเห็นที่มีข้อเสียเล็ก ๆ MODเพราะ แต่มันเป็นทางออกที่ดีอยู่แล้ว
nixda

ฉันลองขั้นตอนดังกล่าวข้างต้น แต่ในขณะที่ดำเนินการ, 9 เซลล์ไม่เต็มแล้วก็เกิดปัญหา ..

ฉันเลือกเซลล์ 6 x 10 (แถวหรือคอลัมน์) ค่าแรกของฉันคือ 1 และค่าสิ้นสุดคือ 60 A1 ถึง F10

1

ฉันคิดว่าฉันมีคำตอบ แต่นี่เป็นจุดจบ (แต่ค่อนข้างสนุก) และฉันไม่รู้วิธีลบ ความต้องการของฉันคือการทำแผ่น bingo ด้วยการตั้งค่าแบบสุ่ม

สร้างคอลัมน์ A4: A63 ด้วยตัวเลข 1 ถึง 60 ป้อนจำนวนเฉพาะที่ใหญ่น้อยกว่า 60 เซลล์ B1 ตัวอย่างเช่น '47 `

ใน B2 ป้อน

= RANDBETWEEN (1; 59)

ในแถว B4: B63 เติมด้วย

=MOD(((A4+B$2)*B$1);60)+1 
=MOD(((A5+B$2)*B$1);60)+1 
...
=MOD(((A63+B$2)*B$1);60)+1 

นี่จะทำให้เป็นลำดับแบบสุ่มพอสมควร B $ 2 จะเปลี่ยนลำดับเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.