Tôi làm được rồi - cảm ơn bạn nhiềuCho dữ liệu vào Như bạn rồi bấm nút tách thế là xong cần gì biết code.
Tôi làm được rồi - cảm ơn bạn nhiềuCho dữ liệu vào Như bạn rồi bấm nút tách thế là xong cần gì biết code.
Lấy Họ:
=LEFT(A1,LEN(A1)-FIND(" ",MID(A1,LEN(A1),1)&MID(A1,LEN(A1)-1,1)&MID(A1,LEN(A1)-2,1)&MID(A1,LEN(A1)-3,1)&MID(A1,LEN(A1)-4,1)&MID(A1,LEN(A1)-5,1)&MID(A1,LEN(A1)-6,1)&MID(A1,LEN(A1)-7,1)))
Cảm ơn anh. Nhưng cách này sẽ bị lỗi nếu như gặp TH cả họ tên dưới 7 ký tự, ví dụ: Lê Hà. Có cách nào để khắc phục không ạ. Em không biết dùng VBA =(
Many thanks Đại ca. Cái này áp dụng tổng quát được luôn ấyMình có cách khác tổng quát hơn nhưng hơi khó hiểu:
Giả thiết A1 chưa "Nguyễn Duy Tuân"
Công thức lấy tên như sau:
=RIGHT(A1,LEN(A1)- FIND("*", SUBSTITUTE(A1," ","*", LEN(A1)-LEN( SUBSTITUTE(A1," ","")))))
Thêm một cách nửa cho bạn.Many Cảm ơn Đại ca. Cái này áp dụng tổng quát được luôn ấy.Này nếu nói hiểu thì em hiểu được nhưng để nghĩ ra công thức thì em chưa tới trình Cảm ơn anh
=TRIM(RIGHT(SUBSTITUTE(A1;" ";REPT(" ";200));200))
Thêm cách nữa để bạn tham khảo cho vui:Many Cảm ơn Đại ca. Cái này áp dụng tổng quát được luôn ấy.Này nếu nói hiểu thì em hiểu được nhưng để nghĩ ra công thức thì em chưa tới trình Cảm ơn anh
B1=MID(A1,1/LOOKUP(2,1/FIND(" ",A1,ROW($1:$50)))+1,50)
Cho cái file có nhiều dữ liệu lên coi.mình cần tách chuỗi 123456789(abc..)1234 thành 3 cột riêng biệt, gồm: cột 1 là 123456789, cột 2 là a,b,c.., cột 3 là 1234, trong đó (abc..) là một chữ trong bảng chữ cái abc.., cả nhà giúp mình với nhé, tks all
View attachment 223185
Không phải file của em. Nhưng tại em muốn coi thử nên tạo thử như vậy để xem code và học ạCho cái file có nhiều dữ liệu lên coi.
chạy thử code nàyKhông phải file của em. Nhưng tại em muốn coi thử nên tạo thử như vậy để xem code và học ạ
Sub abc()
Dim Nguon
Dim Kq
Dim i, j, k, t
Nguon = Sheet1.Range("A2:A4")
ReDim Kq(1 To UBound(Nguon), 1 To 3)
For i = 1 To UBound(Nguon)
k = ""
For j = 2 To Len(Nguon(i, 1))
If IsNumeric(Mid(Nguon(i, 1), j, 1)) = False Then
k = k & Mid(Nguon(i, 1), j, 1)
Else
If IsNumeric(Mid(Nguon(i, 1), j - 1, 1)) = False Then
Exit For
End If
End If
Next j
Kq(i, 2) = k
t = Split(Replace(Nguon(i, 1), k, " "))
Kq(i, 1) = t(0)
Kq(i, 3) = t(1)
Next i
Sheet1.Range("B2:D4") = Kq
End Sub
Thử xem file này nhé.mình cần tách chuỗi 123456789(abc..)1234 thành 3 cột riêng biệt, gồm: cột 1 là 123456789, cột 2 là a,b,c.., cột 3 là 1234, trong đó (abc..) là một chữ trong bảng chữ cái abc.., cả nhà giúp mình với nhé, tks all
View attachment 223185
Không phải file của em. Nhưng tại em muốn coi thử nên tạo thử như vậy để xem code và học ạ
Code khácKhông phải file của em. Nhưng tại em muốn coi thử nên tạo thử như vậy để xem code và học ạ
Sub ABC()
Dim sArr(), Res()
Dim i&, jD&, jC&, n
sArr = Sheet1.Range("A2", Sheet1.Range("A1000000").End(xlUp)).Value
ReDim Res(1 To UBound(sArr), 1 To 3)
For i = 1 To UBound(sArr)
n = Len(sArr(i, 1))
jD = 0: jC = 0
For j = 2 To n
If IsNumeric(Mid(sArr(i, 1), j, 1)) = False And jD = 0 Then jD = j
If IsNumeric(Mid(sArr(i, 1), j, 1)) And jD > 0 Then
jC = j: Exit For
End If
Next j
Res(i, 1) = Mid(sArr(i, 1), 1, jD - 1)
Res(i, 2) = Mid(sArr(i, 1), jD, jC - jD)
Res(i, 3) = Mid(sArr(i, 1), jC, n - jC + 1)
Next i
Sheet1.Range("B2:D2").Resize(UBound(Res)) = Res
End Sub
Anh Hiếu ơi dùngCode khác
Mã:Sub ABC() Dim sArr(), Res() Dim i&, jD&, jC&, n sArr = Sheet1.Range("A2", Sheet1.Range("A1000000").End(xlUp)).Value ReDim Res(1 To UBound(sArr), 1 To 3) For i = 1 To UBound(sArr) n = Len(sArr(i, 1)) jD = 0: jC = 0 For j = 2 To n If IsNumeric(Mid(sArr(i, 1), j, 1)) = False And jD = 0 Then jD = j If IsNumeric(Mid(sArr(i, 1), j, 1)) And jD > 0 Then jC = j: Exit For End If Next j Res(i, 1) = Mid(sArr(i, 1), 1, jD - 1) Res(i, 2) = Mid(sArr(i, 1), jD, jC - jD) Res(i, 3) = Mid(sArr(i, 1), jC, n - jC + 1) Next i Sheet1.Range("B2:D2").Resize(UBound(Res)) = Res End Sub
B2=LOOKUP(1E+36,--LEFT(A2,ROW(INDIRECT("1:"&LEN(A2)))))
C2=MID(A2,LOOKUP(10^10,ROW(INDIRECT("1:"&LEN(A2)))/--(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))=FALSE)),1)
D2=LOOKUP(1E+36,--RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2)))))
Em Vân thử dùng cách này mong anh Hiếu góp ý thêm ạAnh Hiếu ơi dùng
VBScript.RegExp
Được không anh.
Sub Main()
Call Cot_1
Call Cot_3
Call Cot_2
End Sub
Sub Cot_2()
With CreateObject("VBScript.RegExp")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
.Global = True
.Pattern = "\d"
Sheet1.Cells(i, 3) = .Replace(Sheet1.Cells(i, 1), "")
Next
End With
End Sub
Sub Cot_3()
With CreateObject("VBScript.RegExp")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
.Global = True
.Pattern = ".*\D"
Sheet1.Cells(i, 4) = .Replace(Sheet1.Cells(i, 1), "")
Next
End With
End Sub
Sub Cot_1()
With CreateObject("VBScript.RegExp")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
.Global = True
.Pattern = "\D.*"
Sheet1.Cells(i, 2) = .Replace(Sheet1.Cells(i, 1), "")
Next
End With
End Sub