Chào các bạn,
Có cách nào để phân biệt được ô nào là tiếng Việt, ô nào là Tiếng Anh không các bác.
Chẳng hạn như những ô nào full là tiếng Anh thì ô kế bên là TRUE
Còn nếu có chữ nào mà tiếng Việt thì ô kế bên là FALSECác bạn xem file đính kèm nhé
Cảm ơn các bạn
hướng đi có thể thế này
có dấu -> tiếng việt (đơn giản)
không dấu -> tiếng anh
phân tích ở chỗ không dấu
ví dụ từ anh, em: là tiếng việt mà không có dấu nên hiểu lầm qua tiếng anh
vậy làm thế nào để nó hiểu là tiếng việt đây
có 1 hướng củ chuối là đưa toàn bộ từ vựng tiếng anh trong từ điển vào để so sánh, nếu có bất kỳ từ nào trong từ điển thì nó là tiếng anh ( có thể không chính xác)
nếu bạn cung cấp được toàn bộ từ vựng trong từ điển đó thì ok, có thể viết hàm để nhận biết
Chào bạn,
Trong trường hợp mà từ tiếng việt không dấu thì xem như tiếng anh luôn đó bạn.
Ví dụ:
Chung ta la anh em > xem như ô này là tiếng anh
Chúng ta là anh em > ô này là tiếng việtChỉ cần một từ trong cell là tiếng Việt (có dấu) thì xem như cell đó tiếng Việt.
Bạn có giải pháp nào không. Giúp mình nhé. Thanks bạn
sửa lại cho phù hợp nhé bạn
Public Function isEnglish(ByVal Rn As Range) As String
Dim txt As String, i As Long, Arr As Variant
txt = Rn.Value2
If IsNumeric(txt) Then isEnglish = "Day la so": Exit Function
Arr = Split("7845-7847-7849-7851-7853-7855-7857-7859-7861-7863-7871-7873-7875-7877-7879-7889-7891-7893-7895-7897-7899-7901-7903-7905-7907-7913-7915-7917-7919-7921-224-225-7843-227-7841-226-259-273-233-232-7867-7869-7865-234-237-236-7881-297-7883-243-242-7887-245-7885-244-417-250-249-7911-361-7909-432-253-7923-7927-7929-7925", "-")
Do
If InStr(UCase$(txt), UCase$(ChrW$(Arr(i)))) > 0 Then
isEnglish = "Day la tieng viet": Exit Function
End If
i = i + 1
Loop Until i = UBound(Arr)
isEnglish = "Day la tieng anh"
End Function
Theo định nghĩa này thì có thể giải quyết bằng cách thêm một hàm LOẠI DẤU TIẾNG VIỆT. Sau khi loại dấu xong, so sánh với chuỗi gốc, nếu = suy ra đó là tiếng Anh và ngược lại. Vậy thôi
Cách nào cũng có thể làm được. Mình cảm ơn 2 bạn nhé.
Như cách mà tôi đã nói là vầy:
1> Tạo 1 hàm loại dấu tiếng Việt (hàm này tôi viết đã lâu)
Function RemoveMarks(ByVal Text As String) As String
Dim CharCode, i As Long
Dim ResText As String, sTmp As String
On Error Resume Next
sTmp = Text
CharCode = Array(7855, 7857, 7859, 7861, 7863, 7845, 7847, 7849, 7851, 7853, 225, _
224, 7843, 227, 7841, 259, 226, 273, 7871, 7873, 7875, 7877, 7879, _
233, 232, 7867, 7869, 7865, 234, 237, 236, 7881, 297, 7883, 7889, _
7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907, 243, 242, _
7887, 245, 7885, 244, 417, 7913, 7915, 7917, 7919, 7921, 250, _
249, 7911, 361, 7909, 432, 253, 7923, 7927, 7929, 7925)
ResText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyy"
For i = 0 To UBound(CharCode)
sTmp = Replace(sTmp, ChrW(CharCode(i)), Mid(ResText, i + 1, 1))
sTmp = Replace(sTmp, UCase(ChrW(CharCode(i))), UCase(Mid(ResText, i + 1, 1)))
Next
RemoveMarks = sTmp
End Function
2> Áp dụng vào bảng tính:
Gõ công thức tại B2:
=RemoveMarks(A2)=A2
Kéo fill xuống. Xong!
www.giaiphapexcel.com/diendan/threads/ph%c3%a2n-bi%e1%bb%87t-ti%e1%ba%bfng-anh-v%c3%a0-ti%e1%ba%bfng-vi%e1%bb%87t-trong-cell.128454/#post-805343
Bạn thử với 1 trong 2 công thức sau rồi kiểm nghiệm
1. Ctrl + Shift + Enter
=AND(UNICODE(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1))<128)2. =IF(ISERROR(SUMPRODUCT(SEARCH(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1);"0123456789abcdefghijklmnopqrstuvwxyz.;, ")));"FALSE";"TRUE")
Office cùi thì làm vầy 😀
=AND(ABS(32-(ABS(CODE(MID(SUBSTITUTE(A1,"?"," "),ROW(INDIRECT("1:"&LEN(A1))),1))-63)))<32)
Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...
Xem khóa học