Xin mọi người cho phép em hỏi nhờ code VBA - Cách phân chia ô chứa từ Tiếng Việt và ô chứa từ Tiếng Anh

Liên hệ QC

ngoc271998

Đang tìm việc làm
Tham gia
13/8/18
Bài viết
15
Được thích
1
Như hình dưới ạ !
Em có một list dữ liệu từ vựng được phiên dịch từ tiếng Trung qua, mục đích của em là phân chia nó thành 2 cột Tiếng Việt và Tiếng Anh riêng biệt.
" Dò xét là Cột B đã được phiên dịch chứ không phải cột A nha "
Em xin cám ơn ạ.
1590671432796.png
 

File đính kèm

Như hình dưới ạ !
Em có một list dữ liệu từ vựng được phiên dịch từ tiếng Trung qua, mục đích của em là phân chia nó thành 2 cột Tiếng Việt và Tiếng Anh riêng biệt.
" Dò xét là Cột B đã được phiên dịch chứ không phải cột A nha "
Em xin cám ơn ạ.
View attachment 238217
Nếu cột B có duy nhất chữ My thì tính sao bạn.
 
Nếu cột B có duy nhất chữ My thì tính sao bạn.
Dạ thì giữ nguyên nó ở ô Tiếng Anh ạ !
trừ khi trong chuỗi ký tự của ô nó có những từ như "á", "ã", "đ","ở",... đặc trưng của tiếng việt thì mình mới chuyển sang ô tiếng việt ạ !
 
Dạ thì giữ nguyên nó ở ô Tiếng Anh ạ !
trừ khi trong chuỗi ký tự của ô nó có những từ như "á", "ã", "đ","ở",... đặc trưng của tiếng việt thì mình mới chuyển sang ô tiếng việt ạ !
Thử code này xem sao.
Mã:
Sub GPE()
    Dim i As Long, iMa As Long, Dau
    Dim n%, m%, j%, Arr, result1, result2
    Dim Dic As Object, sChar As String
    Dim Check_Dau As Boolean
    Set Dic = CreateObject("Scripting.Dictionary")
    Dau = Array(273, 272, 224, 225, 226, 227, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863, 192, 193, 194, 195, 258, 7840, 7842, _
                7844, 7846, 7848, 7850, 7852, 7854, 7856, 7858, 7860, 7862, 232, 233, 234, 7865, 7867, 7869, 7871, 7873, 7875, 7877, 7879, 200, 201, 202, 7864, _
                7866, 7868, 7870, 7872, 7874, 7876, 7878, 236, 237, 297, 7881, 7883, 204, 205, 296, 7880, 7882, 242, 243, 244, 245, 417, 7885, 7887, 7889, 7891, _
                7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907, 210, 211, 212, 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, _
                7906, 249, 250, 361, 432, 7909, 7911, 7913, 7915, 7917, 7919, 7921, 217, 218, 360, 431, 7908, 7910, 7912, 7914, 7916, 7918, 7920, 253, 7923, _
                7925, 7927, 7929, 221, 7922, 7924, 7926, 7928)
    Arr = Sheet1.Range("A1:B" & Sheet1.Range("B1000000").End(xlUp).Row).Value
    ReDim result1(1 To UBound(Arr), 1 To 2)
    ReDim result2(1 To UBound(Arr), 1 To 2)
    With Dic
        For i = LBound(Dau) To UBound(Dau)
            If Not .Exists(Dau(i)) Then .Add Dau(i), Dau(i)
        Next i
       
        For j = 1 To UBound(Arr)
           
            For i = 1 To Len(Arr(j, 2))
                sChar = Mid(Arr(j, 2), i, 1)
                If sChar <> "" Then
                    iMa = AscW(sChar)
                End If
                If .Exists(iMa) Then
                    Check_Dau = True
                    GoTo go_Check
                End If
            Next i
            Check_Dau = False
go_Check:
            If Check_Dau Then
                n = n + 1
                result1(n, 1) = Arr(j, 1): result1(n, 2) = Arr(j, 2)
            Else
                m = m + 1
                result2(m, 1) = Arr(j, 1): result2(m, 2) = Arr(j, 2)
            End If
        Next j
    End With
    Set Dic = Nothing
    Sheet2.UsedRange.ClearContents
    If n Then Sheet2.Range("H1").Resize(n, 2) = result1
    If m Then Sheet2.Range("A1").Resize(m, 2) = result2
    MsgBox "Finish"
End Sub
 
Cái hình bạn đưa không phải cái file ở bài 1.
à em tìm ra vấn đề rồi ạ !
Đoạn code của anh dò tìm dữ liệu từ cột A:B của Sheet 1, sau đó trả dữ liệu về cột A:B và cột H:I của Sheet 2.
Do cái file em dùng để test code là sheet 1 bị rỗng( chỉ có mỗi ô A1 là chữ "á" ) nên nó bị lỗi.

Đoạn code này đúng chuẩn ý em luôn ạ, cám ơn anh nhiều !
 

File đính kèm

  • 1590681177675.png
    1590681177675.png
    114 KB · Đọc: 4
Web KT

Bài viết mới nhất

Back
Top Bottom