Xin giúp đỡ về tách chuỗi ký tự

Liên hệ QC

kazan189

Thành viên mới
Tham gia
4/12/10
Bài viết
26
Được thích
0
Chào cả nhà,
xin giúp mình tách các ký tự trong file đính kèm, cột kết quả là các ký tự mình muốn tách, và cho hỏi là nếu danh sách dài lên hàng nghìn dòng thì có phải thay đổi công thức hay không?
Xin cảm ơn mọi người!
 

File đính kèm

  • tach chuoi ky tu 1.rar
    11.6 KB · Đọc: 33
Thử cách này coi, mình thử thấy đúng, xem file đính kèm nhé!
 

File đính kèm

  • tach chuoi ky tu 1.rar
    20.1 KB · Đọc: 26
Lọc bỏ các khoảng trắng khác.
B4: =LEFT(TRIM(SUBSTITUTE(A4,CHAR(160),CHAR(32))),FIND(" ",TRIM(SUBSTITUTE(A4,CHAR(160),CHAR(32))))-1)
C4: =MID(TRIM(SUBSTITUTE(A4,CHAR(160),CHAR(32))),FIND(" ",TRIM(SUBSTITUTE(A4,CHAR(160),CHAR(32))))+1,1)
D4: =RIGHT(TRIM(SUBSTITUTE(A4,CHAR(160),CHAR(32))),LEN(TRIM(SUBSTITUTE(A4,CHAR(160),CHAR(32))))-LEN(B4)-LEN(C4)-2)
Coppy công thức xuống cho các ô còn lại.
 
và cho hỏi là nếu danh sách dài lên hàng nghìn dòng thì có phải thay đổi công thức hay không?
Nếu dữ liệu của bạn nhiều thì nên dùng code VBA
Quét chọn vùng dữ liệu cần tách rồi chạy code này
PHP:
Sub Main()
  Dim sArray, Arr(), iRs As Long, i As Long
  On Error Resume Next
  With Selection
    If .Count = 1 Then
      .Offset(, 1).Resize(, 3).Value = Split3Col(.Cells)
    Else
      sArray = .Resize(, 1).Value
      iRs = UBound(sArray, 1)
      ReDim Arr(1 To iRs, 1 To 3)
      For i = 1 To iRs
        Arr(i, 1) = Split3Col(sArray(i, 1))(1)
        Arr(i, 2) = Split3Col(sArray(i, 1))(2)
        Arr(i, 3) = Split3Col(sArray(i, 1))(3)
      Next
      .Offset(, 1).Resize(iRs, 3).Value = Arr
    End If
  End With
End Sub
PHP:
Function Split3Col(ByVal Text As String)
  Dim Tmp As String, Arr(1 To 3)
  On Error Resume Next
  Tmp = Replace(Text, Chr(160), " ")
  Arr(1) = Val(Tmp)
  Tmp = Trim(Mid(Tmp, Len(Arr(1)) + 1, Len(Tmp)))
  Arr(2) = Trim(Mid(Tmp, 1, InStr(Tmp, " ")))
  Arr(3) = Trim(Mid(Tmp, Len(Arr(2)) + 1, Len(Tmp)))
  Split3Col = Arr
End Function
Bảo đảm rằng với dữ liệu cở 20000 dòng, code ra kết quả trong vòng 1 giây
 

File đính kèm

  • tach chuoi ky tu 1.rar
    19.2 KB · Đọc: 24
Lần chỉnh sửa cuối:
Cảm ơn mọi người đã tận tình giúp đỡ, mỗi người mỗi cách, ai cũng tài hết, nhưng mà khi dùng hàm trim để loại các khoảng trắng " " thì hình như không loại được các bác àh. Cách dùng code của bác ndu96081631 thì siêu thật, phục ghê. Xin cảm ơn mọi người 1 lần nữa nhé! regards!|||||


 
nhưng mà khi dùng hàm trim để loại các khoảng trắng " " thì hình như không loại được các bác àh.
Vì trong chuổi của bạn, cái bạn nhìn và tưởng là khoảng trắng thực chất không phải khoảng trắng... Nó là 1 ký tự đặc biệt có char code = 160 ---> Nhìn rất giống khoảng trắng nhưng không thể dùng hàm TRIM để loại bỏ được
(trong code của tôi bạn cũng nhìn thấy có đoạn Replace(Text, Chr(160), " ") đấy thôi)
 
Web KT
Back
Top Bottom