ChanhTQ@
0901452không62
- Tham gia
- 5/9/08
- Bài viết
- 4,254
- Được thích
- 4,861
Có tự làm, nhưng không theo kịp!

Kết quả Sub này, trong mọi trường hợp MAX(Dem)=75
Tạm thời, thay vì dùng: If j > socong1 Then Exit For
Ta dùng: If j > socong1 * 100 Then Exit For
Giảm được 70.062 vòng lặp
Còn cách dùng 3 vòng For, để thử cái đã. Mà sao bạn không thử nhỉ? Hay đây là câu đố? Vậy câu đố có giải thưởng hông?
Mã:
Option Explicit
Dim TrNgan As Long, ChNgan As Long, Ngan As Long, Tong As Long
Dim Chuc As Byte, DVi As Byte, Trieu As Byte, Tram As Byte
Sub BTap04()
Dim sCol As String, Rng As Range, bColor As Byte
Dim Dem As Integer
Trieu = 1: Range("A1:j65500").NumberFormat = "000000"
[a2] = 0: bColor = 33
For TrNgan = 1 To 999
bColor = bColor + 1: Dem = 0
Tong = TrNgan \ 100 + (TrNgan \ 10 Mod 10) + (TrNgan Mod 10)
For Tram = 0 To 9
For Chuc = 0 To 9
For DVi = 0 To 9
If Tong = Tram + Chuc + DVi Then
Dem = 1 + Dem
[COLOR=blue]' Set Rng = Cells(10009, Trieu).End(xlUp).Offset(1) '[/COLOR]
[COLOR=blue]' Rng.Value = TrNgan * 1000 + Tram * 100 + Chuc * 10 + DVi '[/COLOR]
[COLOR=blue]' Rng.Interior.ColorIndex = bColor '[/COLOR]
[COLOR=blue]' If Rng.Row > 8999 Then Trieu = Trieu + 1 '[/COLOR]
End If
Next DVi, Chuc, Tram
Set Rng = Cells(10009, "B").End(xlUp).Offset(1)
Rng = TrNgan & " - " & Dem
If bColor > 40 Then bColor = 33
Next TrNgan
End Sub

Kết quả Sub này, trong mọi trường hợp MAX(Dem)=75
Như đã nói ở trên: Sẽ hậu tạ mà!