Cách chọn những dòng theo một khoảng cách nhất định (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thangthong2007

Thành viên mới
Tham gia
24/3/08
Bài viết
40
Được thích
5
Em có một file gồm danh sách rất nhiều người (như trong file gửi kèm), em có một số câu hỏi nhờ anh chị chỉ giúp cáh làm để ra được kết quả sau:

1. Trước hết Em muốn chọn ngẫu nhiên một người trong danh sách là người đầu tiên được chọn.

2. Sau đó em sẽ chọn người tiếp theo với khoảng cách chọn là 6 (tức là cách 6 người so với người được lựa chọn ngâu nhiên ở trên ) thì chọn người thứ 2 và người thứ 3 được chọn cũng cácnh người thứ 2 là 6 người....để đến khi nào chọn được đủ 20 người thì thôi.

Mong các anh chị chị giùm cách chọn
 

File đính kèm

Em có một file gồm danh sách rất nhiều người (như trong file gửi kèm), em có một số câu hỏi nhờ anh chị chỉ giúp cáh làm để ra được kết quả sau:

1. Trước hết Em muốn chọn ngẫu nhiên một người trong danh sách là người đầu tiên được chọn.

2. Sau đó em sẽ chọn người tiếp theo với khoảng cách chọn là 6 (tức là cách 6 người so với người được lựa chọn ngâu nhiên ở trên ) thì chọn người thứ 2 và người thứ 3 được chọn cũng cácnh người thứ 2 là 6 người....để đến khi nào chọn được đủ 20 người thì thôi.

Mong các anh chị chị giùm cách chọn
Bạn xem bài viết bên dưới của thầy Tuấn xem coi có giúp gì được không nhe:
http://www.giaiphapexcel.com/forum/showthread.php?t=27286
 
Cảm ơn bạn, nhưng mong muốn của tôi là chọn ngẫu nhiên một người trước, sau đó mới chọn theo khoảng cách
 
Một phương pháp dùng công thức:
Lấy hết danh sách nếu không đủ thì lấy lại từ đầu. Có thể đặt name hoặc dùng cột phụ để rút gọn công thức.
 

File đính kèm

Lần chỉnh sửa cuối:
Một phương pháp dùng công thức:
Lấy hết danh sách nếu không đủ thì lấy lại từ đầu. Có thể đặt name hoặc dùng cột phụ để rút gọn công thức.
Em cũng làm bằng công thức nhưng dùng hàm RAND (đở mất công bị lổi công thức khi chưa cài Add-In Analysis ToolPak)
- Danh sách nằm tại cột A, từ A1 trở xuống
- Tại B1 gõ công thức
PHP:
=INT(RAND()*COUNTA($A:$A))+1
- Tại B2 gõ công thức
PHP:
=MOD(B1+5,COUNTA($A:$A))+1
- Kéo fill công thức của cell B2 đến B20
- Tại C1 gõ công thức
PHP:
=INDEX($A:$A,$B1)
Kéo fill đến C20
 

File đính kèm

Do CountA($A:$A) =84 và 84 chia hết cho 6, nên phải có 1 điều kiện để không chọn trùng 2 lần ndu à.

Công thức đề nghị:

B2 = B1+6-(B1>=COUNTA($A:$A)-6)*(COUNTA($A:$A)-3)

kết quả các dòng chọn lệch 3 dòng.
 
Lần chỉnh sửa cuối:
Nếu thích tham khảo thêm, thì đây

PHP:
Option Explicit
Sub SoNgau_6()
 Dim SNg As Integer, jJ As Byte, eRw As Long
 
 eRw = [A65500].End(xlUp).Row
 Randomize:                      SNg = 1 + Int(Rnd() * eRw)
 For jJ = 1 To 20
   SNg = SNg + 6
   If SNg > eRw Then SNg = SNg - eRw + IIf(eRw Mod 6 = 0, 1, 0)
   [b65500].End(xlUp).Offset(1).Value = Cells(SNg, "A").Value
 Next jJ
End Sub
 
Do CountA($A:$A) =84 và 84 chia hết cho 6, nên phải có 1 điều kiện để không chọn trùng 2 lần ndu à.

Công thức đề nghị:

B2 = B1+6-(B1>=COUNTA($A:$A)-6)*(COUNTA($A:$A)-3)

kết quả các dòng chọn lệch 3 dòng.
Hợp lý
Nhưng em nghĩ tác giả ra đề này thì đương nhiên danh sách trên thực tế phải "dài" đến mức không thể bị trùng sau khi chọn 20 người
 
Web KT

Bài viết mới nhất

Back
Top Bottom