Huyện và Xã ngẫu nhiên khi nhập thông tin Tỉnh

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

pqkythuat1

Thành viên mới
Tham gia
14/1/23
Bài viết
35
Được thích
2
Chào mọi người,

Mình có bảng ABC như file, cột A: tỉnh, cột B: huyện, cột C: xã. Mình dùng hàm gì để khi điền Tỉnh vào cột K thì cột L sẽ cho ra huyện ngẫu nhiên tương ứng, và cột M sẽ cho ra xã ngẫu nhiên của huyện tương ứng ạ.

Cám ơn mọi người rất nhiều, chúc mọi người sức khoẻ.
 

File đính kèm

Chào mọi người,

Mình có bảng ABC như file, cột A: tỉnh, cột B: huyện, cột C: xã. Mình dùng hàm gì để khi điền Tỉnh vào cột K thì cột L sẽ cho ra huyện ngẫu nhiên tương ứng, và cột M sẽ cho ra xã ngẫu nhiên của huyện tương ứng ạ.

Cám ơn mọi người rất nhiều, chúc mọi người sức khoẻ.
Tức là trong 1 tỉnh chỉ lấy ra 1 huyện ngẫu nhiên và trong 1 huyện ngẫu nhiên đó lại lấy ra 1 xã ngẫu nhiên thôi hả bạn?
 
Chẳng biết đúng không, làm đại, bạn test kỹ kỹ vào nhé, xác suất sai cao lắm đó:
L2:
Mã:
=INDEX($B:$B,AGGREGATE(15,6,ROW($A$2:$A$10605)/($A$2:$A$10605=$K2),RANDBETWEEN(1,COUNTIFS($A$2:$A$10605,$K2))))
M2:
Mã:
=INDEX($C:$C,AGGREGATE(15,6,ROW($A$2:$A$10605)/($A$2:$A$10605=$K2)/($B$2:$B$10605=$L2),RANDBETWEEN(1,COUNTIFS($A$2:$A$10605,$K2,$B$2:$B$10605,$L2))))
 

File đính kèm

Góp vui công thức:
L2
Mã:
=OFFSET(Sheet1!$A$1,MATCH(Sheet1!$K2,Sheet1!$A$2:$A$10605,0)+RANDBETWEEN(0,COUNTIF(Sheet1!$A$2:$A$10605,Sheet1!$K2)-1),1)
M2
Mã:
=OFFSET(Sheet1!$A$1,MATCH($K2&L2,Sheet1!$A$2:$A$10605&Sheet1!$B$2:$B$10605,0)-1+RANDBETWEEN(1,COUNTIFS(Sheet1!$A$2:$A$10605,Sheet1!$K2,Sheet1!$B$2:$B$10605,Sheet1!L2)),2)
 

File đính kèm

Cám ơn các bạn rất nhiều ạ. Mình đã chạy công thức và kết quả ra đúng như mong đợi ạ.
 
Nghĩ hoài không ra bài toán này dùng để làm gì? Để gửi thư sì-pem?

Theo lô gic thì vì bảng được sort để dồn tỉnh, huyện,... về từng khối riêng cho nên ta có thể dùng hàm match để tìm dòng xuất hiện đầu tiên của tỉnh, và hàm countif để tìm số lần xuất hiện. Cộng dòng đầu tiên với Randbetween (0, số lần xuất hiện - 1)
Với xã thì cũng dùng cách tương tự, nhưng vì huyện có thể trùng tên cho hai tỉnh khác nhau cho nên phải dùng countifs (đếm số lần xuất hiện của huyện nằm trong tỉnh)

Chú: vì bảng sắp xếp theo tên tỉnh cho nên thay vì countif có thể dùng hàm Match, tỉnh, list tỉnh, 1) để tìm lần xuất hiện cuối cùng. Randbetween lần xuất hiện đầu và cuối.
Cách này nhanh hơn vì Match với tham số 1 hiệu quả hơn countif nhiều.
Tuy nhiên cách này không thể dùng cho xã vì tên huyện không sắp xếp theo thứ tự ưu tiên.
 
Lần chỉnh sửa cuối:
Nghĩ hoài không ra bài toán này dùng để làm gì? Để gửi thư sì-pem?

Theo lô gic thì vì bảng được sort để dồn tỉnh, huyện,... về từng khối riêng cho nên ta có thể dùng hàm match để tìm dòng xuất hiện đầu tiên của tỉnh, và hàm countif để tìm số lần xuất hiện. Cộng dòng đầu tiên với Randbetween (0, số lần xuất hiện - 1)
Với xã thì cũng dùng cách tương tự, nhưng vì huyện có thể trùng tên cho hai tỉnh khác nhau cho nên phải dùng countifs (đếm số lần xuất hiện của huyện nằm trong tỉnh)

Chú: vì bảng sắp xếp theo tên tỉnh cho nên thay vì countif có thể dùng hàm Match, tỉnh, list tỉnh, 1) để tìm lần xuất hiện cuối cùng. Randbetween lần xuất hiện đầu và cuối.
Cách này nhanh hơn vì Match với tham số 1 hiệu quả hơn countif nhiều.
Tuy nhiên cách này không thể dùng cho xã vì tên huyện không sắp xếp theo thứ tự ưu tiên.
Có một bạn SV du lịch nhờ mình làm 1 file excel xuất địa điểm tỉnh - huyện - xã ngẫu nhiên để bạn kiểm tra trí nhớ xem địa điểm đó có địa danh hoặc sự kiện gì nổi bật :) Mình cũng bí nên đành viết bài xin trợ giúp ạ.
 
Có một bạn SV du lịch nhờ mình làm 1 file excel xuất địa điểm tỉnh - huyện - xã ngẫu nhiên để bạn kiểm tra trí nhớ xem địa điểm đó có địa danh hoặc sự kiện gì nổi bật :) Mình cũng bí nên đành viết bài xin trợ giúp ạ.
Thực ra bài toán này khó thể làm "tự động". Bởi vì hàm random trong Excel có bản tính volatile.
Để lấy huyện, ta dùng random.
Lúc lấy xã thì bảng tính bị thay đổi, nếu không cẩn thận thì lúc Excel tính xong xã, huyện bị hàm random tính lại thành trợt lớt.
 
Thực ra bài toán này khó thể làm "tự động". Bởi vì hàm random trong Excel có bản tính volatile.
Để lấy huyện, ta dùng random.
Lúc lấy xã thì bảng tính bị thay đổi, nếu không cẩn thận thì lúc Excel tính xong xã, huyện bị hàm random tính lại thành trợt lớt.
Vậy chắc xài VBA thì có cửa, phải không bạn?
 
Vậy chắc xài VBA thì có cửa, phải không bạn?
Tôi tìm chưa được tài liệu nói về random trên trị random ở range khác, cho nên chưa thể khẳng định thực sự Excel sẽ hoạt động thế nào.
Trước mắt thì trên 365, công thức của tôi bị lâm tình trạng như sau:
Tỉnh X, random ra Huyện Y, khi gõ công thức Xã thì ra Xã Z. Nhưng Huyện bị đổi thành Y2 (cũng tỉnh X nhưng huyện này không chứa Xã Z)

Tôi không muốn chủ quan. Có thể công thức tôi sai. Công thức đúng thì không bị vấn đề?
 
Chủ bài đăng xem & trãi nghiệm file sơ khởi
 

File đính kèm

Chủ bài đăng xem & trãi nghiệm file sơ khởi
Giờ này cái "người bạn SV" kia đã lên lịch trình đi rồi, Xã Huyện là xác định, không còn răng đờm gì nữa hết.


Chú: tôi sợ nhất là dân "hỏi giùm". Vài ba bài là giấu đầu lòi đuôi.
 
Hai bác đa nghi quá, nhưng em còn đa nghi hơn:
Cũng có người hỏi để mà hỏi thôi;
Sau khi có câu trả lời thì đố lại đồng nghiệp lấy . . . .
!
 
Tôi tìm chưa được tài liệu nói về random trên trị random ở range khác, cho nên chưa thể khẳng định thực sự Excel sẽ hoạt động thế nào.
Trước mắt thì trên 365, công thức của tôi bị lâm tình trạng như sau:
Tỉnh X, random ra Huyện Y, khi gõ công thức Xã thì ra Xã Z. Nhưng Huyện bị đổi thành Y2 (cũng tỉnh X nhưng huyện này không chứa Xã Z)

Tôi không muốn chủ quan. Có thể công thức tôi sai. Công thức đúng thì không bị vấn đề?
Nếu vậy thì chắc lấy 1 lần ngẫu nhiên thôi cho chắc bác nhỉ.
Mã:
=INDEX($B$2:$C$10605,RANDBETWEEN(MATCH(1,1/(K2=$A$2:$A$10605),0),MATCH(2,1/(K2=$A$2:$A$10605),1)),0)
 
Nếu vậy thì chắc lấy 1 lần ngẫu nhiên thôi cho chắc bác nhỉ.
Mã:
=INDEX($B$2:$C$10605,RANDBETWEEN(MATCH(1,1/(K2=$A$2:$A$10605),0),MATCH(2,1/(K2=$A$2:$A$10605),1)),0)
Công thức này ra đúng.
Lưu ý đây là hàm mảng. Trong 365 thì nó tự spill. Các phiên bản trước đó thì phải dùng mảng.
 
Web KT

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

Back
Top Bottom