Tách dữ liệu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Nguyễn khánh linh 119

Thành viên mới
Tham gia
27/8/19
Bài viết
4
Được thích
0
Em có dữ liệu cần tách, mọi người giúp em với ạ
165 Yên Hoà 74.35 2 4 7 tỷ Cầu giấy
344 Ngô Gia Tự 150 2 4 6.5 tỷ Hai Bà Trưng
Muốn tách thành 4 cột thông tin là số nhà, đường phố, thông số, quận thì làm ntn ạ
 
Vấn đề của bạn phải là làm sao để không có mớ hỗn độn mà bạn gọi là dữ liệu đó

Mình ví dụ như dưới đây thì bạn sẽ tách làm sao:

150/13/7 đường D3 13 tỷ Cầu Cá . . .

12 Bis Lý Chiến Thắng 012 tỷ Quận 3

12A/27 Lý Chiêu Hoàng 94 tỷ Quận 7

. . . . . .
 
Vấn đề của bạn phải là làm sao để không có mớ hỗn độn mà bạn gọi là dữ liệu đó

Mình ví dụ như dưới đây thì bạn sẽ tách làm sao:

150/13/7 đường D3 13 tỷ Cầu Cá . . .

12 Bis Lý Chiến Thắng 012 tỷ Quận 3

12A/27 Lý Chiêu Hoàng 94 tỷ Quận 7

. . . . . .
Cái đó em được giao dữ liệu nó bắt buộc phải như vậy ạ, nó ko bỏ được ạ, em cũng mới k biết nhiều excel nên anh giúp em với ạ
 
Xem giống bài này: bấm vào đây
Tôi có hỗ trợ bạn phamminhmmo đến bước này (trong hội thoại) :

Cảm ơn bạn!
Thật sự là chưa có giải pháp tốt, tạm thời tôi vừa dùng hàm vba vừa dùng hàm excel, bạn xem thử.
1. Tạo 1 module, chèn code:
Code:Copy.
Function GetNumber(Tex As String, stNum As Byte) As Long
Dim i As Long, Tmp As String, TextNum As String, myArr() As String
If Len(Tex) = 0 Then GetNumber = 0: Exit Function
Tmp = Replace(Replace(Replace(Tex, ".", ""), "/", ""), "-", "")
For i = 1 To Len(Tmp)
If InStr("0123456789", Mid(Tmp, i, 1)) Then
TextNum = TextNum & Mid(Tmp, i, 1)
Else
TextNum = TextNum & " "
End If
Next i
Tmp = WorksheetFunction.Trim(TextNum)
myArr = Split(Tmp)
GetNumber = myArr(stNum)
End Function
2. Công thức C2: =LEFT(B2,FIND(" "&D2&" "&E2&" "&F2&" "&G2,B2)-1)
3. Công thức D2: =GetNumber($B2,COLUMN(A$1))
4. Copy công thức D2 tới G2
5. Công thức H2: =MID(B2,FIND("tỷ ",B2)+3,FIND("đến",B2)-FIND("tỷ ",B2)-6)
6. Công thức I2: =MID(B2,FIND("CV",B2),FIND(GetNumber(B2,8),B2)-FIND("CV",B2)+9)
7. Copy C2:I2 xuống.

223438


Tham khảo có thể giúp được giải quyết phần nào không thôi, chứ giải quyết hết là rất khó.
 
@Nguyễn khánh linh 119
Chạy thử đoạn code dưới đây.
Bạn lưu ý : Nếu cách diễn giải trong cột B khác so với file mẫu là kết quả sẽ sai theo.
Mã:
Sub Tach_()
Dim Nguon, Dong
Dim Tam
Dim Kq
Dim i, j, k, x1, x2, z1, z2, t1, t2, y, spt
Nguon = Sheet1.Range("A1").CurrentRegion
Dong = UBound(Nguon)
ReDim Kq(1 To Dong - 1, 1 To 6)
For i = 2 To Dong
    Tam = Split(Nguon(i, 2))
    spt = UBound(Tam)
    For j = spt To 0 Step -1
        If IsNumeric(Tam(j)) = True Then
            k = j + 1
            Exit For
        End If
    Next j
    y = 0
    x1 = 1: x2 = 1
    For j = 2 To k
        t1 = Mid(Tam(j - 1), 1, 1)
        t2 = Mid(Tam(j), 1, 1)
        If IsNumeric(t2) = False And t2 = UCase(t2) Then
            If IsNumeric(t1) = False And t1 = UCase(t1) Then
                If y = 0 Then
                    x2 = x2 + 1
                Else
                    If y = 1 Then
                        z1 = j - 1
                        z2 = j
                        y = y + 1
                    Else
                        z2 = z2 + 1
                    End If
                End If
            End If
        Else
            y = 1
        End If
    Next j
    Kq(i - 1, 1) = Tam(0)
    For j = 1 To spt
        If j <= x2 Then
            Kq(i - 1, 2) = Kq(i - 1, 2) & " " & Tam(j)
        Else
            If j < z1 Then
                Kq(i - 1, 3) = Kq(i - 1, 3) & " " & Tam(j)
            Else
                If j <= z2 Then
                    Kq(i - 1, 4) = Kq(i - 1, 4) & " " & Tam(j)
                Else
                    If j < k Then
                        Kq(i - 1, 6) = Kq(i - 1, 6) & " " & Tam(j)
                    Else
                        Kq(i - 1, 5) = Kq(i - 1, 5) & " " & Tam(j)
                    End If
                End If
            End If
        End If
    Next j
Next i
With Sheet1
    .Range("C2").Resize(Dong - 1, 6).ClearContents
    .Range("C2").Resize(Dong - 1, 6) = Kq
    .UsedRange.Columns.AutoFit
End With
End Sub
 
Web KT

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

Back
Top Bottom