Thưa các anh chị? Em muốn ghép 0,1,2,3,4,5,6,7,8,9 thành (nhóm 5) số có 5 chữ số khác nhau Ví dụ: 12345 sẽ tính một nhóm, 54321 vẫn là nhóm đó, 23451 ... vẫn là nhóm đó. tóm lại các số có chứa 12345 dù có đảo vị trí số khác đi nhưng vẫn là 1 nhóm đó.
Liệu excel có giải quyết được xem có bao nhiêu nhóm như này không? Có tổng hợp hết các nhóm ra được không ạ?
Nói cách khác là tìm tất cả các số có 5 chữ số và lọc chúng nhóm lại thành các nhóm có 5 chữ số giống nhau ạ? viết các nhóm đó ra như nào?
Nếu không thấy liên quan anh tới excell anh chị bỏ qua giúp.
Thưa các anh chị? Em muốn ghép 0,1,2,3,4,5,6,7,8,9 thành (nhóm 5) số có 5 chữ số khác nhau Ví dụ: 12345 sẽ tính một nhóm, 54321 vẫn là nhóm đó, 23451 ... vẫn là nhóm đó. tóm lại các số có chứa 12345 dù có đảo vị trí số khác đi nhưng vẫn là 1 nhóm đó.
Liệu excel có giải quyết được xem có bao nhiêu nhóm như này không? Có tổng hợp hết các nhóm ra được không ạ?
Nói cách khác là tìm tất cả các số có 5 chữ số và lọc chúng nhóm lại thành các nhóm có 5 chữ số giống nhau ạ? viết các nhóm đó ra như nào?
Nếu không thấy liên quan anh tới excell anh chị bỏ qua giúp.
Sub test()
Dim k As Long, so As Long, dk As Boolean, Arr()
ReDim Arr(1 To 252, 1 To 1)
so = 43210
Do While so <= 98765
dk = (Mid(so, 1, 1) > Mid(so, 2, 1)) And (Mid(so, 2, 1) > Mid(so, 3)) And (Mid(so, 3, 1) > Mid(so, 4, 1)) And (Mid(so, 4, 1) > Mid(so, 5, 1))
If dk Then
k = k + 1
Arr(k, 1) = so
End If
so = so + 1
Loop
Range("A1").Resize(k).Value = Arr
End Sub
Như thế ta cứ "cần cù" xét các số liên tiếp, bắt đầu từ số 43210, với mỗi số ta tính và xét điều kiện cần có đã nói ở trên. Nếu thỏa điều kiện thì lấy vào mảng.
Như vậy thì code phải là dễ hiểu và bạn không có quyền nói: "nhưng đọc chưa được hiểu cho lắm"
Sub test()
Dim k As Long, so As Long, dk As Boolean, Arr()
ReDim Arr(1 To 252, 1 To 1)
so = 43210
Do While so <= 98765
dk = (Mid(so, 1, 1) > Mid(so, 2, 1)) And (Mid(so, 2, 1) > Mid(so, 3)) And (Mid(so, 3, 1) > Mid(so, 4, 1)) And (Mid(so, 4, 1) > Mid(so, 5, 1))
If dk Then
k = k + 1
Arr(k, 1) = so
End If
so = so + 1
Loop
Range("A1").Resize(k).Value = Arr
End Sub
Như thế ta cứ "cần cù" xét các số liên tiếp, bắt đầu từ số 43210, với mỗi số ta tính và xét điều kiện cần có đã nói ở trên. Nếu thỏa điều kiện thì lấy vào mảng.
Như vậy thì code phải là dễ hiểu và bạn không có quyền nói: "nhưng đọc chưa được hiểu cho lắm"
Nói thực là em mới đọc, xem qua VBA thôi, coi như chỉ hiểu về BVA là nhũng đoạn code phục vụ cho công việc trong excell, (có vẻ VBA cũng na ná giống mấy ngôn nhữ lập trình khác) Nhưng bài tập này để em tự code chắc lâu lắm, mà chắc gì đã làm được!
Qua đây em mới thấy khả năng của Excell là vô cùng rộng lớn! Các bác cũng thật siêu!
Chốt lại vụ File kia của em, chốt lại là ko đưa vào công thức được. Phải dùng BVA đúng không ạ? Nếu code nhanh được thì bác code cho em phát để em học dần. .... Còn nó qua lằng ngoằng, mất nhiều thời gian của bác thì thôi! Cảm ơn rất nhiều vì bác đã nhiệt tình!
Nếu code nhanh được thì bác code cho em phát để em học dần. .... Còn nó qua lằng ngoằng, mất nhiều thời gian của bác thì thôi! Cảm ơn rất nhiều vì bác đã nhiệt tình!
Thôi được, đã trót gợi ý 5 FOR thì tôi công bố vậy.
Mã:
Sub test1()
' nhanh hon test
Dim k As Long, k1 As Long, k2 As Long, k3 As Long, k4 As Long, k5 As Long, Arr(), t
t = Timer
ReDim Arr(1 To 252, 1 To 1)
For k1 = 0 To 5
For k2 = k1 + 1 To 6
For k3 = k2 + 1 To 7
For k4 = k3 + 1 To 8
For k5 = k4 + 1 To 9
k = k + 1
Arr(k, 1) = k5 & k4 & k3 & k2 & k1
Next k5
Next k4
Next k3
Next k2
Next k1
Range("B1").Resize(k).Value = Arr
End Sub
Thôi được, đã trót gợi ý 5 FOR thì tôi công bố vậy.
Mã:
Sub test1()
' nhanh hon test
Dim k As Long, k1 As Long, k2 As Long, k3 As Long, k4 As Long, k5 As Long, Arr(), t
t = Timer
ReDim Arr(1 To 252, 1 To 1)
For k1 = 0 To 5
For k2 = k1 + 1 To 6
For k3 = k2 + 1 To 7
For k4 = k3 + 1 To 8
For k5 = k4 + 1 To 9
k = k + 1
Arr(k, 1) = k5 & k4 & k3 & k2 & k1
Next k5
Next k4
Next k3
Next k2
Next k1
Range("B1").Resize(k).Value = Arr
End Sub
Chân thành cảm ơn sự nhiệt tình chia sẻ của bác!
Em đã dăng kí học1 khóa excell online, nhưng nói thực diễn đàn này là một thầy giáo vô cùng gần gũi về mặt giao tiếp và sâu, đa dạng về mặt kiến thức.
Chân thành cảm ơn sự nhiệt tình chia sẻ của bác!
Em đã dăng kí học1 khóa excell online, nhưng nói thực diễn đàn này là một thầy giáo vô cùng gần gũi về mặt giao tiếp và sâu, đa dạng về mặt kiến thức.
Mới học Excel online mà động lại càng bài như thế này, thì toi, nhanh bị rối. Tốt nhất lấy code áp dụng và quên đi. Học theo bài dần dần vậy, bao giờ đủ lực thì đọc lại.