doanhoanghai
Thành viên hoạt động
- Tham gia
- 20/12/07
- Bài viết
- 195
- Được thích
- 4
Lung tung thì làm theo kiểu lung tung.Các bác giúp em với ! Em mới làm được tách các số điện thoại ra nhưng do DL lung tung quá chưa biết phải làm sao nữa cả
Public Sub tachtach()
Dim sArr(), dArr(), I As Long, J As Long, Tem, Str As String
sArr = Range("A2", Range("A2").End(xlDown)).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 3)
For I = 1 To UBound(sArr, 1)
Str = Replace(sArr(I, 1), ChrW(10), ChrW(32))
Str = Replace(Str, "( ", "(")
Str = Replace(Str, ":", ChrW(32))
Tem = Split(Trim(Str), ChrW(32))
For J = 0 To UBound(Tem)
If InStr(Tem(J), "@") Then
dArr(I, 3) = dArr(I, 3) & ChrW(32) & Tem(J)
ElseIf IsNumeric(Mid(Tem(J), 2, 1)) Or IsNumeric(Mid(Tem(J), 3, 1)) Then
dArr(I, 2) = dArr(I, 2) & ChrW(32) & Tem(J)
Else
dArr(I, 1) = dArr(I, 1) & ChrW(32) & Tem(J)
End If
Next J
Next I
Range("B2").Resize(I - 1, 3) = dArr
End Sub
Cái này file gốc là file gì vậy bạn... Mình không nghĩ người ta ngồi gõ tay ra cái đống này đâu @@
Bạn có thể đưa file gốc lên được không...
Tạm thế này đã đến mai sẽ có cách hoàn hảo
Sớm giúp mình nha. Mình đang phải làm thủ công để tách ra này khổ quá.
Option Explicit
Sub tt()
Dim tach(1 To 60000, 1 To 3), arr, v, tam As Variant, i As Long, mys As String
arr = [a2:a60000]
For i = 1 To UBound(arr)
If arr(i, 1) = "" Then Exit For
tam = Split(arr(i, 1), Chr(10))
For Each v In tam
mys = Trim(v)
If mys <> "" Then
If InStr(1, mys, "@") Then
If tach(i, 3) = "" Then tach(i, 3) = mys Else tach(i, 3) = tach(i, 3) & Chr(10) & mys
Else
If InStr(1, mys, 0) Then
If tach(i, 2) = "" Then tach(i, 2) = Replace(mys, "/", Chr(10)) Else tach(i, 2) = tach(i, 2) & Chr(10) & Replace(mys, "/", Chr(10))
Else
If tach(i, 1) = "" Then tach(i, 1) = Split(mys, "|")(0) Else tach(i, 1) = tach(i, 1) & Chr(10) & Split(mys, "|")(0)
End If
End If
End If
Next
Next i
[b2].Resize(i, 3) = tach
End Sub