Em chào cả nhà.
Em có 1 file gồm 2 sheet (sheet1, sheet2). Ở sheet 2 cột B (số lượng) em sử dụng vlookup để tìm tên hàng bên sheet1 lấy giá trị cột E (màu vàng). Nhưng do khác font nên hàm không ra kết quả.
Mong anh chị trong diễn đàn hướng dẫn cách đưa về 1 font. Sheet1 là font tiếng nhật, sheet2 là font Unicode.
Em cảm ơn.
Em chào cả nhà.
Em có 1 file gồm 2 sheet (sheet1, sheet2). Ở sheet 2 cột B (số lượng) em sử dụng vlookup để tìm tên hàng bên sheet1 lấy giá trị cột E (màu vàng). Nhưng do khác font nên hàm không ra kết quả.
Mong anh chị trong diễn đàn hướng dẫn cách đưa về 1 font. Sheet1 là font tiếng nhật, sheet2 là font Unicode.
Em cảm ơn.
Của bạn không phải do lỗi phông, đó là do không có mã nào tại cột B bên sheet1 giống mã nào tại cột A bên sheet 2 cho dù đã cùng một phông, bạn nên kiểm tra lại nhé.
Của bạn không phải do lỗi phông, đó là do không có mã nào tại cột B bên sheet1 giống mã nào tại cột A bên sheet 2 cho dù đã cùng một phông, bạn nên kiểm tra lại nhé.
Dạ! Tên sản phẩm bên sheet2 dò bên sheet1 đều có một số mã. Nếu nhìn bằng mắt thì thấy là có. Chỉ là kiểu chữ nó khác nhau. Nên em không hiểu tại sao hàm không lấy kết quả được. Mong các anh chị trên GPE giúp em.
Dạ! Tên sản phẩm bên sheet2 dò bên sheet1 đều có một số mã. Nếu nhìn bằng mắt thì thấy là có. Chỉ là kiểu chữ nó khác nhau. Nên em không hiểu tại sao hàm không lấy kết quả được. Mong các anh chị trên GPE giúp em.
Cái này không phải lỗi font mà là 2 kí tự khác nhau, mặc dù nhìn thì cùng là "A" nhưng vị trí của chúng nó trong bảng mã Unicode cách nhau 65248 (cây số). Để Vloookup được thì bạn phải đưa nó về cùng một mối.
Mình viết một cái code VBA để bạn thực hiện việc này. Chỉ cần quét chọn vùng cần chuyển, bấm "Convert" là được.
Hiện tại thì mình chỉ chuyển các kí tự A-Z,0-9, và dấu "-". Dữ liệu trong file của bạn giờ chỉ gồm các kí tự này, sau này có phát sinh thêm thì bạn bổ sung vào cột A sheet "Bang do" (kí tự chuẩn nhập từ bàn phím), kéo công thức cột B xuống.
Cái này không phải lỗi font mà là 2 kí tự khác nhau, mặc dù nhìn thì cùng là "A" nhưng vị trí của chúng nó trong bảng mã Unicode cách nhau 65248 (cây số). Để Vloookup được thì bạn phải đưa nó về cùng một mối.
Mình viết một cái code VBA để bạn thực hiện việc này. Chỉ cần quét chọn vùng cần chuyển, bấm "Convert" là được.
Hiện tại thì mình chỉ chuyển các kí tự A-Z,0-9, và dấu "-". Dữ liệu trong file của bạn giờ chỉ gồm các kí tự này, sau này có phát sinh thêm thì bạn bổ sung vào cột A sheet "Bang do" (kí tự chuẩn nhập từ bàn phím), kéo công thức cột B xuống.
Nếu các ký tự ở vùng 1 có tên vd. là Hichic thì ký tự nhìn có vẻ giống như thế nhưng ở vùng 2 sẽ có tên là Fullwidth Hichic. Vd. "A" hàng ngày ta gõ trên bàn phím có tên là LATIN CAPITAL LETTER A, còn "A" nhái kia có tên là FULLWIDTH LATIN CAPITAL LETTER A.
Từ đâu có 65248? Dễ thấy 65248 = &HFEE0.
Nhìn hình 1 ta thấy "A" có điểm mã là &H41 (hex), còn nhìn hình 2 thấy "A" nhái có điểm mã là &HFF21. 2 ký tự này có điểm mã cách nhau đúng &HFEE0 (65248) - &H41 + &HFEE0= &HFF21
----------
Code convert trong bài #10 chưa chuẩn. Cụ thể vd. kết quả cho B177 là "SI-E2軸筒(更新型)" (trước ( và sau ) nhìn thấy "dãn cách") trong khi phải là "SI-E2軸筒(更新型)", hoặc kết quả cho B161 là "STM-EC/T" trong khi phải là "STM-EC/T".
Tôi đề nghị như sau, không dám khẳng định là chuẩn nhưng ai thích thì thử.
Mã:
Sub convert()
Dim k As Long, r As Long, c As Long, code As Long, s As String, text As String, mot_o As Boolean, vung As Range, o_dau As Range, dulieu()
On Error Resume Next
Set vung = Application.InputBox("Hay chon vung du lieu can bien doi", Type:=8)
If vung Is Nothing Then Exit Sub
Set o_dau = Application.InputBox("Hay chon o dau tien cho ket qua", Type:=8)
If o_dau Is Nothing Then Exit Sub
On Error GoTo 0
If vung.Count = 1 Then mot_o = True
If mot_o Then
dulieu = vung.Resize(2).Value
Else
dulieu = vung.Value
End If
Set o_dau = o_dau(1)
For r = 1 To UBound(dulieu, 1) + mot_o
For c = 1 To UBound(dulieu, 2)
text = ""
s = dulieu(r, c)
For k = 1 To Len(s)
code = AscW(Mid(s, k, 1))
If code > &HFF00 And code < &HFF5F Then
text = text & Chr(code + 288)
Else
text = text & ChrW(code)
End If
Next k
dulieu(r, c) = text
Next c
Next r
o_dau.Resize(UBound(dulieu, 1) + mot_o, UBound(dulieu, 2)).Value = dulieu
End Sub
Nếu các ký tự ở vùng 1 có tên vd. là Hichic thì ký tự nhìn có vẻ giống như thế nhưng ở vùng 2 sẽ có tên là Fullwidth Hichic. Vd. "A" hàng ngày ta gõ trên bàn phím có tên là LATIN CAPITAL LETTER A, còn "A" nhái kia có tên là FULLWIDTH LATIN CAPITAL LETTER A.
Từ đâu có 65248? Dễ thấy 65248 = &HFEE0.
Nhìn hình 1 ta thấy "A" có điểm mã là &H41 (hex), còn nhìn hình 2 thấy "A" nhái có điểm mã là &HFF21. 2 ký tự này có điểm mã cách nhau đúng &HFEE0 (65248) - &H41 + &HFEE0= &HFF21
----------
Code convert trong bài #10 chưa chuẩn. Cụ thể vd. kết quả cho B177 là "SI-E2軸筒(更新型)" (trước ( và sau ) nhìn thấy "dãn cách") trong khi phải là "SI-E2軸筒(更新型)", hoặc kết quả cho B161 là "STM-EC/T" trong khi phải là "STM-EC/T".
Tôi đề nghị như sau, không dám khẳng định là chuẩn nhưng ai thích thì thử.
Mã:
Sub convert()
Dim k As Long, r As Long, c As Long, code As Long, s As String, text As String, mot_o As Boolean, vung As Range, o_dau As Range, dulieu()
On Error Resume Next
Set vung = Application.InputBox("Hay chon vung du lieu can bien doi", Type:=8)
If vung Is Nothing Then Exit Sub
Set o_dau = Application.InputBox("Hay chon o dau tien cho ket qua", Type:=8)
If o_dau Is Nothing Then Exit Sub
On Error GoTo 0
If vung.Count = 1 Then mot_o = True
If mot_o Then
dulieu = vung.Resize(2).Value
Else
dulieu = vung.Value
End If
Set o_dau = o_dau(1)
For r = 1 To UBound(dulieu, 1) + mot_o
For c = 1 To UBound(dulieu, 2)
text = ""
s = dulieu(r, c)
For k = 1 To Len(s)
code = AscW(Mid(s, k, 1))
If code > &HFF00 And code < &HFF5F Then
text = text & Chr(code + 288)
Else
text = text & ChrW(code)
End If
Next k
dulieu(r, c) = text
Next c
Next r
o_dau.Resize(UBound(dulieu, 1) + mot_o, UBound(dulieu, 2)).Value = dulieu
End Sub