Có phải cái chữ này:Trong cùng 1 ô.VD: [FONT=.VnTime]chÞ h»ng -71 chïa l¸ng, dong da[/FONT] bây giờ tớ muốn tách ra lam 4 cột mà không có cách nao, giup minh voi
Bạn muốn tách thành 4 cột như thế nào ? Tách từ chữ nào?chị hằng -71 chùa láng, dong da
Có phải ý bạn như thế này không ?Trong cùng 1 ô.VD: "Chị Hằng -71 chùa Láng, Đống Đa" bây giờ tớ muốn tách ra lam 4 cột mà không có cách nao, giup minh voi
mượn đở file của pac ca_dafi , thì em đã thêm vào phím tắt được rồi nhỉ:Bạn xem file đính kèm. File này làm bằng công thức. Cái này có nhiều trên GPE mình lắm bạn à!
Function TachTenPo(HoTen As String, Optional Vitri As Byte = 1) As String
'' Po_PiKachu
''Vtri = 1: Ho ; Vtri = 2: TenLot ; Vtri = 3: Ten ; Vtri = 4: HoTenlot
Dim arr() As String
Dim K As Long
arr() = Split(HoTen, " ")
K = UBound(arr)
TachTenPo = Choose(Vitri, arr(0), Trim(Replace(Replace(HoTen, arr(K), ""), arr(0), "")), _
arr(K), Trim(Replace(HoTen, arr(K), "")))
End Function
Private Function Tach(Str as string, SoTuCanTach as integer) as string
str = trim(str)
Dim Mang() as string
mang = split(str," ")
if sotucantach>ubound(mang)+1 then exit function
Dim I as integer
str = ""
For i = ubound(mang) -sotucantach to ubound(mang)
str = str & mang(i) & " "
next
Tach = trim(str)
end function
Public Function tachten(ten As String) As String
Dim i As Integer
ten = Trim(ten)
For i = Len(ten) To 1 Step -1
If Mid(ten, i, 1) = " " Then
tachten = Left(ten, i)
End If
Next
End Function
Public Function hoten(ch As String, ten As Boolean)
Dim kq As Variant
vt = 0
For i = 0 To Len(ch) - 1
If Mid(ch, i + 1, 1) = " " Then vt = vt + 1
Next
kq = Split(ch, " ")
If ten Then
hoten = kq(vt)
Else
hoten = kq(0)
End If
End Function
Public Function hoten(ch As String, ten As Integer) As String
Dim kq As Variant, vt, i As Long
vt = 0
For i = 0 To Len(ch) - 1
If Mid(ch, i + 1, 1) = " " Then vt = vt + 1
Next
kq = Split(ch, " ")
Select Case ten
Case Is = 1
hoten = kq(0)
Case Is = 2
For i = 1 To vt - 1
hoten = IIf(Len(kq(i)) > 0, hoten & kq(i) & " ", hoten)
Next i
Case Is = 3
hoten = kq(vt)
End Select
End Function
1. Họ : =LEFT(TRIM(A1),FIND(" ",A1)-1)
2. Đệm : =TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",100)),100,LEN(SUBSTITUTE(TRIM(A1)," ",REPT(" ",100)))-200))
3. Tên : =TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",100)),100))
E Thử rồi nhưng vẫn bị báo lỗi như này: #NAMEHọ tên thường nhập chung 1 cột cho nhanh. Sau đó ta có thể tách riêng tên ra 1 cột. Nhưng có lúc chúng ra cần tách ra 2 cột: cột họ, cột tên. Đây là 2 làm làm công việc đó:
'======================
Function TachHo(hoten As String) As String
hoten = Trim(hoten)
If hoten = "" Then
TachHo = ""
Else
vt = InStrRev(hoten, " ", Len(hoten))
If vt = 0 Then
TachHo = ""
Else
TachHo = Trim(Mid(hoten, 1, vt))
End If
End If
End Function
'====================
Function TachTen(hoten As String) As String
hoten = Trim(hoten)
If hoten = "" Then
TachTen = ""
Else
vt = InStrRev(hoten, " ", Len(hoten))
If vt = 0 Then
TachTen = hoten
Else
TachTen = Mid(hoten, vt + 1)
End If
End If
End Function
'===================
Bạn sử dụng hàm này bình thường như các hàm khác của Excel, nhưng nếu bạn cần tách họ tên thành 2 cột riêng biệt thì bạn phải thực hiện một loạt các thao tác sau:
1. tách họ, tách tên trên 2 cột phụ
2. chèn thêm cột bên trái cột họ tên
3. Copy 2 cột họ tên mới tách và dán bằng Paste Special - Value trở về nơi cũ.
Để làm nhanh các công việc đó, bạn có thể sử dụng thủ tuc TachHoTen.
Sử dụng thủ tục này như sau:
1. Chọn tất cả các ô chứa họ tên, kể cả ô chứa tiêu đề trên đầu.
2. Chạy Sub TachHoTen.
VBA sẽ làm thay cho bạn các việc còn lại. Lưu ý bạn là số cột trong vùng chọn phải là 1, nếu lớn hơn 1 VBA không thực hiện.
'====================
Sub TachHoTen()
rd = Selection.Row
sr = Selection.Rows.Count
rc = rd + sr - 1
c = Selection.Column
sc = Selection.Columns.Count
If sc > 1 Then
MsgBox "Ban chon " & sc & " cot. Ban phai chon lai 1 cot", vbOKOnly, "Thong bao"
Exit Sub
End If
Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
For r = rd To rc
Cells(r, c) = TachHo(Cells(r, c + 2))
Cells(r, c + 1) = TachTen(Cells(r, c + 2))
Next
Range(Cells(rd, c + 2), Cells(rc, c + 2)).Delete Shift:=xlToLeft
End Sub
'==============
Bạn có thể tham khảo trong tập tin TachHoTen.zip
Bạn có Enable Macros chưa vậy ?E Thử rồi nhưng vẫn bị báo lỗi như này: #NAME
Dùng công thức này thử xem:Để sắp theo mẫu tự A,B,C nên cần phải tách thành cột tên riêng. Nhờ các bạn giúp đỡ bằng cách sử dụng công thức như thế nào? Cám ơn nhiều.
F3 =TRIM(RIGHT(SUBSTITUTE(TRIM($B3)," ",REPT(" ",LEN($B3))),LEN($B3)))
E3 =TRIM(SUBSTITUTE($B3,$F3,""))