Giúp đỡ sửa câu lệnh VBA

Liên hệ QC
Status
Không mở trả lời sau này.

Quang_Van_Tam

Thành viên mới
Tham gia
14/3/19
Bài viết
3
Được thích
0
em có 1 file tạo mức số viết bằng câu lệnh VBA hiện tại tạo mức chỉ nhật 1 cột ở mức 0, bây giờ em muốn chỉnh sửa lại là tạo mức nhận số từ mức 0 đến mức 9. Mong các bác giúp đỡ.
1.jpg
 

File đính kèm

  • 01. tạo mức số.xlsm
    56.9 KB · Đọc: 15
Bạn là người viết hàm đó à? Hay ai viết cho thế? Chưa hiểu logic lắm
Mình tải từ diễn đàn của 1 người khác cũng lâu lắm rồi không nhớ của bác nào.
Mình có 9 cột và các dãy số gồm 20 dòng. Hiện tại hàm tạo mức chỉ nhận tạo mức 1 cột duy nhất. Ví dụ như mình chọn tạo mức số cho cột mức 0 thì chỉ tạo mức số ở vùng chọn đấy thôi, nhưng khi mình sửa lại chọn ra vùng rộng hơn thì nó vẫn chỉ tạo mức ở cột mức 0 chứ không lấy các số ở cột kết tiếp ghép vào tạo mức cùng để ra giàn tạo mức. Bây giờ mình muốn sửa lại là hàm nhận tạo mức số trong 9 cột đó gộp lại để tạo ra mức số chung.
 
Tóm lại có thật không, sắp đến giờ rồi đấy. Đã muốn bỏ rồi mà nghiệt ngã lắm thay.

Nhìn cái bảng toàn 2 số thế kia, không tuân theo quy luật gì, hệt như xác suất ngẫu nhiên của mỏ vàng XSKT.
Tâm hồn có trẻ thơ đến mấy cũng không tránh được vòng xoáy của cuộc đời.
 
Trước tiên dự kiến chiều nay có lẽ về 17 chăng? :cool: :cool: :cool:
Phải chăng đây là xác suất thông kê dữ liệu 17 năm? ha ha.
Theo thôi, thể nào bà xã cho đăng xuất ra khỏi cửa, ngủ đi văng phòng khách là còn may, nhanh chân ra đê chiếm chỗ là vừa
Đùa tý, hihi....@!>><@!>><
 
Tóm lại có thật không, sắp đến giờ rồi đấy. Đã muốn bỏ rồi mà nghiệt ngã lắm thay.

Nhìn cái bảng toàn 2 số thế kia, không tuân theo quy luật gì, hệt như xác suất ngẫu nhiên của mỏ vàng XSKT.
Tâm hồn có trẻ thơ đến mấy cũng không tránh được vòng xoáy của cuộc đời.
Còn 77 49 bước nữa mới ra được 2 số bác à. Cái này chỉ là khởi động thôi :D
 
Còn 77 49 bước nữa mới ra được 2 số bác à. Cái này chỉ là khởi động thôi :D
Ôi định mệnh rồi, lại thêm số 49 tớ mới oánh dấu bài bên kia.
Không biết là trời cho hay là trò chơi đây.

Đồng chí nghiên cứu diễn giải lại cho kỹ vấn đề để chuẩn công thức, tí nữa còn điều chỉnh theo thời cuộc.

_)(#; _)(#; _)(#;
 
Ôi định mệnh rồi, lại thêm số 49 tớ mới oánh dấu bài bên kia.
Không biết là trời cho hay là trò chơi đây.

Đồng chí nghiên cứu diễn giải lại cho kỹ vấn đề để chuẩn công thức, tí nữa còn điều chỉnh theo thời cuộc.

_)(#; _)(#; _)(#;
Bác có xử được vụ này không? Kết quả làm bằng tayScreenshot_20230928-182349_Zalo.jpg
 
Bác có xử được vụ này không? Kết quả làm bằng tayView attachment 295281
Số chạy hên sui à bạn.Chỉ từ 0 đến 99 và không trùng nhau à.Cái này diễn đàn có nhiều mà.
Hên sui sửa lại chút code.
Mã:
Function TachMuc(ByVal rng As Range, ByVal muc As Range) As String
  Dim sArr(), arr&(0 To 99), S, Res$, sRow&, i&, r&, T

  sArr = rng.Value
  sRow = UBound(sArr, 1)
  For r = 1 To sRow
    S = Split(sArr(r, 1), ",")
    For i = 0 To UBound(S)
      If S(i) <> Empty Then arr(CLng(S(i))) = arr(CLng(S(i))) + 1
    Next i
  Next r
  For i = 0 To 99
    For Each T In muc
    If arr(i) = T Then
      Res = Res & "," & Format(i, "00")
      Exit For
    End If
    Next T
  Next i
  If Res <> Empty Then TachMuc = Mid(Res, 2)
End Function
=TachMuc($B$2:$K$21,L2:L3)
 
Lần chỉnh sửa cuối:
này giống random từ 0-99, nếu nhập số đầu tiên là 85 số thì hiển thị 85 số random từ 0-99 không trùng lặp. Không biết mình diễn giải vậy có đúng không nữa. Mong chủ top cho ý kiến
 
Xung
Số chạy hên sui à bạn.Chỉ từ 0 đến 99 và không trùng nhau à.Cái này diễn đàn có nhiều mà.
Hên sui sửa lại chút code.
Mã:
Function TachMuc(ByVal rng As Range, ByVal muc As Range) As String
  Dim sArr(), arr&(0 To 99), S, Res$, sRow&, i&, r&, T

  sArr = rng.Value
  sRow = UBound(sArr, 1)
  For r = 1 To sRow
    S = Split(sArr(r, 1), ",")
    For i = 0 To UBound(S)
      If S(i) <> Empty Then arr(CLng(S(i))) = arr(CLng(S(i))) + 1
    Next i
  Next r
  For i = 0 To 99
    For Each T In muc
    If arr(i) = T Then
      Res = Res & "," & Format(i, "00")
      Exit For
    End If
    Next T
  Next i
  If Res <> Empty Then TachMuc = Mid(Res, 2)
End Function
=TachMuc($B$2:$K$21,L2:L3)
Đúng rồi. chỉ từ "00 đến 99". Tức là lọc số trùng lặp ở các cột, các dòng bên kia tạo mức sang bên này.
VD: tạo mức ở 9 cột bên kia thì sẽ ra kết quả như sau.

Mức: 15 (2) số
33,60
Mức: 16 (6) số
19,61,63,71,91,93
Mức: 17 (15) số
00,04,08,27,34,39,47,55,57,66,67,73,74,84,88
Mức: 18 (27) số
05,06,09,11,13,14,16,18,23,30,31,36,38,43,46,49,53,54,56,58,59,64,70,75,76,89,99
Mức: 19 (33) số
01,07,12,15,17,21,22,24,25,26,29,32,37,40,48,50,51,62,65,68,69,77,78,80,81,85,86,87,90,94,96,97,98
Mức: 20 (17) số
02,03,10,20,28,35,41,42,44,45,52,72,79,82,83,92,95
Bài đã được tự động gộp:

này giống random từ 0-99, nếu nhập số đầu tiên là 85 số thì hiển thị 85 số random từ 0-99 không trùng lặp. Không biết mình diễn giải vậy có đúng không nữa. Mong chủ top cho ý kiến
Như mình trả lời bạn ở trên đó. Cũng là số random nhưng là lọc lấy số trùng lặp để tạo mức. như trong vùng 9 cột 20 dòng kia có số 85 trùng 19 lần thì sẽ ở mức 19 kiểu như thế.
 
Chưa nghĩ được ứng dụng gì ngoài bác đề đang châm đóm.

Trước tớ cũng hay dò tìm số đã ra để chọn số tránh trùng hy vọng nó về nhưng trật lất.

Bật mí, hôm qua suỵt hơn 100k rồi. Cũng ngang ngang uống bia. Lâu lâu giúp nhà giàu giàu thêm vậy.
 
Chưa nghĩ được ứng dụng gì ngoài bác đề đang châm đóm.

Trước tớ cũng hay dò tìm số đã ra để chọn số tránh trùng hy vọng nó về nhưng trật lất.

Bật mí, hôm qua suỵt hơn 100k rồi. Cũng ngang ngang uống bia. Lâu lâu giúp nhà giàu giàu thêm vậy.
Hôm qua lô có 17 bác không lót tí. Bác có dùng excel để làm không?
 
Hôm qua lô có 17 bác không lót tí. Bác có dùng excel để làm không?
Trước thua nhiều quá nên bỏ rồi, giờ lâu lâu làm tí cho đỡ nhớ nghề thôi.
Cũng may là mình cũng không nghiện lắm.

Quay lại vấn đề, đồng chí phải nghiên cứu trình bày lại mục đích, kết quả thì mới được hỗ trợ, chứ cứ 00-99 thì trên này ít người cùng chí hướng lắm, chỉ chục người cùng đam mê thôi.
 
Trước thua nhiều quá nên bỏ rồi, giờ lâu lâu làm tí cho đỡ nhớ nghề thôi.
Cũng may là mình cũng không nghiện lắm.

Quay lại vấn đề, đồng chí phải nghiên cứu trình bày lại mục đích, kết quả thì mới được hỗ trợ, chứ cứ 00-99 thì trên này ít người cùng chí hướng lắm, chỉ chục người cùng đam mê thôi.
Mục đính là khi copy các dãy số vào các cột ở bên số 1 thì bên số 2 sẽ tạo mức từ các giàn số đó.
(File hiện tại nó chỉ đang tạo mức được 1 cột duy nhất chứ không tạo mức được hết ở các cột kia dù đã chọn vùng tạo mức từ mức 0 đến mức 9 và dòng số 20 trong công thức tạo mức nhưng kết quả chỉ cho ra tạo mức ở cột mức 0.)

Kết quả: Khi copy giàn số vào ô bên 1 thì bên 2 sẽ tự tạo mức cho ra kết quả như dưới.
"Mức 15 (2) số: 33,60 tức là trong đó có số 33,60 trùng nhau 15 lần. các mức khác cũng tương tự mức 16 các số đó trùng nhau 16 lần".

Mức: 15 (2) số
33,60
Mức: 16 (6) số
19,61,63,71,91,93
Mức: 17 (15) số
00,04,08,27,34,39,47,55,57,66,67,73,74,84,88
Mức: 18 (27) số
05,06,09,11,13,14,16,18,23,30,31,36,38,43,46,49,53,54,56,58,59,64,70,75,76,89,99
Mức: 19 (33) số
01,07,12,15,17,21,22,24,25,26,29,32,37,40,48,50,51,62,65,68,69,77,78,80,81,85,86,87,90,94,96,97,98
Mức: 20 (17) số
02,03,10,20,28,35,41,42,44,45,52,72,79,82,83,92,95

1.jpg
 
Vậy tạo bài mới đi, tiêu đề: "Hàm VBA liệt kê ra những số trùng nhau n lần".

Đưa vào bên Lập trình.
 
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom