emgaingayngo
Thành viên hoạt động



- Tham gia
- 9/2/07
- Bài viết
- 141
- Được thích
- 5
Em có 5 chuỗi như sau:
strChucNganC = "968709290665" (chuỗi 1)
strNganC = "5297499041003620" (chuỗi 2)
strTramC = "72905335809204842" (chuỗi 3)
strDvC = "150621943994125633" (chuỗi 4)
strChucC = "843999994716719825" (chuỗi 5)
Lần lượt lấy mỗi lần 3 ký tự liên tiếp trong 1 chuỗi, đem so sánh với 4 chuỗi còn lại, nếu giống nhau thì lấy ra.
Em đã xử lý như sau,
nhưng dài quá, khó nâng cấp.
Em sử dụng 4 For...nhưng chẳng bit ghi KQ như thế nào để nó khỏi ghi lặp lại KQ đã ghi.
Ai có cách nào ngắn gọn giúp mình giải quyết với! Thanks!
strChucNganC = "968709290665" (chuỗi 1)
strNganC = "5297499041003620" (chuỗi 2)
strTramC = "72905335809204842" (chuỗi 3)
strDvC = "150621943994125633" (chuỗi 4)
strChucC = "843999994716719825" (chuỗi 5)
Lần lượt lấy mỗi lần 3 ký tự liên tiếp trong 1 chuỗi, đem so sánh với 4 chuỗi còn lại, nếu giống nhau thì lấy ra.
Em đã xử lý như sau,
PHP:
Sub SoDocChinh()
Dim i As Long, j As Long
Dim chChucNgan As String, chNgan As String, KQ As String
Dim chTram As String, chChuc As String, chDv As String
Dim chChucNgan1 As String, chNgan1 As String, chTram1 As String, chChuc1 As String, chDv1 As String
strChucNganC = "968709290665"
strNganC = "5297499041003620"
strTramC = "72905335809204842"
strDvC = "150621943994125633"
strChucC = "843999994716719825"
Columns(3).ClearContents
'LayChuoi
'Hang ChucNgan so sanh voi Ngan
For i = 1 To 10
KQ = ""
chChucNgan = DAO3SO(Mid(strChucNganC, i, 3))
For j = 1 To 14
chNgan = DAO3SO(Mid(strNganC, j, 3))
If chChucNgan = chNgan Then
KQ = Trim(chNgan)
End If
Next j
Range("C1000").End(xlUp).Offset(1, 0).Value = KQ
Next i
'Hang ChucNgan so sanh voi Tram
For i = 1 To 10
KQ = ""
chChucNgan = DAO3SO(Mid(strChucNganC, i, 3))
For j = 1 To 15
chTram = DAO3SO(Mid(strTramC, j, 3))
If chChucNgan = chTram Then
KQ = Trim(chTram)
End If
Next j
Range("C1000").End(xlUp).Offset(1, 0).Value = KQ
Next i
'Hang ChucNgan so sanh voi Chuc
For i = 1 To 10
KQ = ""
chChucNgan = DAO3SO(Mid(strChucNganC, i, 3))
For j = 1 To 16
chChuc = DAO3SO(Mid(strChucC, j, 3))
If chChucNgan = chChuc Then
KQ = Trim(chChuc)
End If
Next j
Range("C1000").End(xlUp).Offset(1, 0).Value = KQ
Next i
.....................
.......................
nhưng dài quá, khó nâng cấp.
Em sử dụng 4 For...nhưng chẳng bit ghi KQ như thế nào để nó khỏi ghi lặp lại KQ đã ghi.
PHP:
Sub QuetAll()
Dim m As Long, n As Long, p As Long, q As Long, r As Long
Dim chChucNgan As String, chNgan As String, KQ1 As String
Dim chTram As String, chChuc As String, chDv As String
Columns(3).ClearContents
strChucNganC = "968709290665"
strNganC = "5297499041003620"
strTramC = "72905335809204842"
strDvC = "150621943994125633"
strChucC = "843999994716719825"
'LayChuoi
For m = 1 To 10
chChucNgan = DAO3SO(Mid(strChucNganC, m, 3))
For n = 1 To 14
chNgan = DAO3SO(Mid(strNganC, n, 3))
For p = 1 To 15
chTram = DAO3SO(Mid(strTramC, p, 3))
For q = 1 To 16
chChuc = DAO3SO(Mid(strChucC, q, 3))
For r = 1 To 16
chDv = DAO3SO(Mid(strDvC, r, 3))
Next r
'Range("C10000").End(xlUp).Offset(1, 0).Value = KQ1
Next q
'Range("C10000").End(xlUp).Offset(1, 0).Value = KQ1
Next p
'Range("C10000").End(xlUp).Offset(1, 0).Value = KQ1
Next n
Range("C10000").End(xlUp).Offset(1, 0).Value = KQ1
Next m
End Sub
Ai có cách nào ngắn gọn giúp mình giải quyết với! Thanks!