Cũng không phức tạp lắm đâuĐể mình vd luôn nhé rồi các bạn xem có giải quyết được không.
VD : ta có 1 list dãy mã hoá 16 kí tự, mình sẽ lấy tạm 1 dãy mã hoá làm vd, dãy mã hoá chia thành 16 vị trí
$ D _ - b a D K < $ Y c S W # {
quy luật của dãy mã hoá trên là như sau :
vị trí 1 :
4 là $
5 là %
vị trí 1 chỉ cần xác định 2 cái này thôi là đủ , còn các vị trí khác xác định từ 0 - 9
$B==eXFKD;TcVV^<
"
1 list như vậy thi dùng tay không thể được hoặc tốn sức hoặc sai sót. Vậy trong excel có cách nào replace được không với quy luật đã được tìm ra ? Pro giúp cái nào
Cũng không phức tạp lắm đâu
Bạn tạo 16 cột theo 16 ví trí và mỗi cột có 9 dòng.
Bạn tách chuổi "$ D _ - b a D K < $ Y c S W # {" thành 16 cột và dùng hàm Match theo từng cột.
Nếu có thể bạn đưa vào file Excel và up lên, dùng công thưc hay viết code cũng không khó lắm.
Option Explicit
Function GiaiMa(StrC As String) As String
Dim Hg As Long, Cot As Byte, jJ As Long
Dim Rng As Range, Cls As Range
Hg = Range("BangTra").Rows.Count
Cot = Range("BangTra").Columns.Count
GiaiMa = "'" & IIf(Left(StrC, 1) = "$", 4, 5)
For jJ = 2 To Cot
Set Rng = Range("BangTra").Cells(1, jJ).Resize(Hg)
GiaiMa = GiaiMa & Rng.Find(Mid(StrC, jJ, 1), , xlFormulas, xlWhole).Row - 1
Next jJ
End Function
Function cvma(ByVal ma As String)
listma = "D[}{/><ABC`{()_+-=][}`[&*()_+-=]`fWXYZAbcde`bSTUVWXYZA`F{/><ABCDE`KBCDEFGHIJ`D[}{/><ABC`%,.:;?~@#$`YPQRSTUVWX`lcdefghijk`WNOPQRSTUV`bSTUVWXYZA`)~@#$%^&*(`D[}{/><ABC"
mcode = Split(listma, "`")
If Mid(ma, 1, 1) = "$" Then t = 4
If Mid(ma, 1, 1) = "%" Then t = 5
For i = 2 To Len(ma)
For j = 1 To Len(mcode(i - 2))
If Mid(ma, i, 1) = Mid(mcode(i - 2), j, 1) Then
t = t & " " & j - 1
Exit For
End If
Next
Next
cvma = t
End Function
Function cvma(ByVal ma As String)
listma = "D[}{/><ABC`{()_+-=][}`[&*()_+-=]`fWXYZAbcde`bSTUVWXYZA`F{/><ABCDE`KBCDEFGHIJ`D[}{/><ABC`%,.:;?~@#$`YPQRSTUVWX`lcdefghijk`WNOPQRSTUV`bSTUVWXYZA`)~@#$%^&*(`D[}{/><ABC"
mcode = Split(listma, "`")
If Mid(ma, 1, 1) = "$" Then t = 4
If Mid(ma, 1, 1) = "%" Then t = 5
If Mid(ma, 1, 1) = "^" Then t = 6
For i = 2 To Len(ma)
For j = 1 To Len(mcode(i - 2))
If Mid(ma, i, 1) = Mid(mcode(i - 2), j, 1) Then
t = t & " " & j - 1
Exit For
End If
Next
Next
cvma = t
End Function
Option Explicit
Function GiaiMa(StrC As String) As String
Dim Hg As Long, Cot As Byte, jJ As Long
Dim Rng As Range, Cls As Range, Cd As String
Hg = Range("BangTra").Rows.Count
Cot = Range("BangTra").Columns.Count
If Cot > 16 Then Cot = 16
Cd = Left(StrC, 1)
GiaiMa = "'" & Switch(Cd = "$", 4, Cd = "%", 5, Cd = "^", 6)
For jJ = 2 To Cot
Set Rng = Range("BangTra").Cells(1, jJ).Resize(Hg)
GiaiMa = GiaiMa & Rng.Find(Mid(StrC, jJ, 1), , xlFormulas, xlWhole).Row - 1
Next jJ
End Function
Mà các bác cứ VBA code thì sao thế nhỉ?cậu có thể viết code html cho mình được không hoặc chỉ tớ cách dùng tại chưa học excel bao giờ thông cảm cho mình )