Lấy số từ trong nội dung câu

Liên hệ QC

chothadiem

Thành viên hoạt động
Tham gia
29/10/18
Bài viết
188
Được thích
50
Thân ái chào anh chị và các bạn!
Xin giúp đỡ tôi vấn đề sau:
Trong ô A1 có nội dung "Anh chẳng trở về thì anh đi đi anh nhé!"
1_Trường hợp 1: ở ô A2 Chỉ lấy 2 từ đầu "Anh chẳng" trong nội dung nêu trên (ô A1)
Không xét đến ký tự mà chỉ luôn quy định lấy 02 từ đầu tiên
2_Trường hợp 2: ở ô A3 bỏ 2 từ đầu tiên chỉ lấy những từ còn lại sau khi đã bỏ 2 từ đầu tiên
Cụ thể sau khi đã bỏ 2 từ đầu tiên đi thì nội dung ô A3 sẽ lấy là :"trở về thì anh đi đi anh nhé!"
Mở rộng hơn ra nội dung ô có thể gồm nhiều từ nhưng đều lấy 02 từ đầu tiên và bỏ 02 từ đầu tiên đi
** Ghi chú: không xét đến ký tự mà chỉ xét đến từ.
Cho tôi hỏi có thể làm được như vấn đề tôi nêu không ạ? hay phải xét đến cả ký tự?
Xin cảm ơn!
 
Tham khảo thêm ở đây:

 
Tham khảo thêm ở đây:

Dạ! vậy em phải post lại bài ở chủ đề đó đúng không ạ?
 
Thân ái chào anh chị và các bạn!
Xin giúp đỡ tôi vấn đề sau:
Trong ô A1 có nội dung "Anh chẳng trở về thì anh đi đi anh nhé!"
1_Trường hợp 1: ở ô A2 Chỉ lấy 2 từ đầu "Anh chẳng" trong nội dung nêu trên (ô A1)
Không xét đến ký tự mà chỉ luôn quy định lấy 02 từ đầu tiên
2_Trường hợp 2: ở ô A3 bỏ 2 từ đầu tiên chỉ lấy những từ còn lại sau khi đã bỏ 2 từ đầu tiên
Cụ thể sau khi đã bỏ 2 từ đầu tiên đi thì nội dung ô A3 sẽ lấy là :"trở về thì anh đi đi anh nhé!"
Mở rộng hơn ra nội dung ô có thể gồm nhiều từ nhưng đều lấy 02 từ đầu tiên và bỏ 02 từ đầu tiên đi
** Ghi chú: không xét đến ký tự mà chỉ xét đến từ.
Cho tôi hỏi có thể làm được như vấn đề tôi nêu không ạ? hay phải xét đến cả ký tự?
Xin cảm ơn!
Thử
Mã:
A2=TRIM(LEFT(A1,FIND(" ",A1,FIND(" ",A1)+1)))
A3=TRIM(SUBSTITUTE(A1,A2,""))
 
Thử
Mã:
A2=TRIM(LEFT(A1,FIND(" ",A1,FIND(" ",A1)+1)))
A3=TRIM(SUBSTITUTE(A1,A2,""))
Cám ơn anh, anh có thể giúp em dữ liệu ở ô A3 để không phụ thuộc vào ô A2 được không ạ?
Vấn đề này chắc dùng VBA có làm được không anh vậy anh?
 
Tham khảo thêm ở đây:

Em vừa xem hết 24 bài nhưng nội dung đều khác ý của em một chút, em xin được post bài ở đây anh nhé!
 
Thân ái chào anh chị và các bạn!
Xin giúp đỡ tôi vấn đề sau:
Trong ô A1 có nội dung "Anh chẳng trở về thì anh đi đi anh nhé!"
1_Trường hợp 1: ở ô A2 Chỉ lấy 2 từ đầu "Anh chẳng" trong nội dung nêu trên (ô A1)
Không xét đến ký tự mà chỉ luôn quy định lấy 02 từ đầu tiên
2_Trường hợp 2: ở ô A3 bỏ 2 từ đầu tiên chỉ lấy những từ còn lại sau khi đã bỏ 2 từ đầu tiên
Cụ thể sau khi đã bỏ 2 từ đầu tiên đi thì nội dung ô A3 sẽ lấy là :"trở về thì anh đi đi anh nhé!"
Mở rộng hơn ra nội dung ô có thể gồm nhiều từ nhưng đều lấy 02 từ đầu tiên và bỏ 02 từ đầu tiên đi
** Ghi chú: không xét đến ký tự mà chỉ xét đến từ.
Cho tôi hỏi có thể làm được như vấn đề tôi nêu không ạ? hay phải xét đến cả ký tự?
Xin cảm ơn!
Công thức như sau:
Mã:
A2 =MID(A1,1,FIND(" ",A1)+FIND(" ",TRIM(MID(A1,FIND(" ",A1),10000))))
A3 =MID(A1,LEN(A2),10000)
 
Em vừa xem hết 24 bài nhưng nội dung đều khác ý của em một chút, em xin được post bài ở đây anh nhé!
Ý tôi là: bạn tham khảo thêm ...

Thêm công thức tại A3, không phụ thuộc vào A2:

=REPLACE(A1,1,FIND(" ",A1,FIND(" ",A1)+1),"")
 
Ý tôi là: bạn tham khảo thêm ...

Thêm công thức tại A3, không phụ thuộc vào A2:

=REPLACE(A1,1,FIND(" ",A1,FIND(" ",A1)+1),"")
Dạ vâng, em dùng để tách khi dùng văn bản trên excel. anh cho em hỏi thêm chút cái này có thể dùng hàm tự tạo hay code vba có được chứ anh?
Em thao tác văn bản cần xử lý liên tục và nhiều kiểu như vậy, nếu dùng vba có tiện hơn không vậy ạ?
Và như ban đầu em nói để có thể mở rộng và linh động hơn trong quá trình xử lý, ví dụ như không phải tách 2 từ đầu mà là 3 từ hay 4. .. chả hạn!
Anh cho em xin ý kiến nhé!em cám ơn anh nhiều!
 
Lần chỉnh sửa cuối:
@chothadiem Nhập dữ liệu của bạn vào sheet1 cột A, bắt đầu từ A1. Chạy thử code dưới đây xem sao
Mã:
Sub TachTu()
Dim SArr
Dim Arr
Dim Res
Dim i, j, k
With Sheet1
    SArr = .Range("A1", .Range("A1").End(xlDown))
    k = UBound(SArr)
    ReDim Res(1 To k, 1 To 2)
    For i = 1 To k
        Arr = Split(SArr(i, 1))
        Res(i, 1) = Arr(0) & " " & Arr(1)
        Arr(0) = ""
        Arr(1) = ""
        Res(i, 2) = Trim(Join(Arr))
    Next i
    .Range("B1").Resize(k, 2).ClearContents
    .Range("B1").Resize(k, 2) = Res
End With
End Sub
 
cách đơn giản nhất:
Mã:
A3 = Mid(A1,len(copy nguyên công thức của A2 vào đây),10000)
@chothadiem Nhập dữ liệu của bạn vào sheet1 cột A, bắt đầu từ A1. Chạy thử code dưới đây xem sao
Mã:
Sub TachTu()
Dim SArr
Dim Arr
Dim Res
Dim i, j, k
With Sheet1
    SArr = .Range("A1", .Range("A1").End(xlDown))
    k = UBound(SArr)
    ReDim Res(1 To k, 1 To 2)
    For i = 1 To k
        Arr = Split(SArr(i, 1))
        Res(i, 1) = Arr(0) & " " & Arr(1)
        Arr(0) = ""
        Arr(1) = ""
        Res(i, 2) = Trim(Join(Arr))
    Next i
    .Range("B1").Resize(k, 2).ClearContents
    .Range("B1").Resize(k, 2) = Res
End With
End Sub
Vâng, nếu như dữ liệu nằm ở ô nào đó (ô F hay ô bất kỳ) thì lại sửa lại ô đó trong code đúng không anh/chị?
 
Vâng, nếu như dữ liệu nằm ở ô nào đó (ô F hay ô bất kỳ) thì lại sửa lại ô đó trong code đúng không anh/chị?
Code bài trên viết cho dữ liệu từ 2 ô trở lên, bắt đầu từ A1, kết quả điền vào cột B.
Nếu dữ liệu tại cột F thì sửa A1 thành F1, B1 thành G1 là được.
Tức là phải sửa 2 thứ: tên vùng dữ liệu + sửa tên vùng điền kết quả
 
Vâng, nếu như dữ liệu nằm ở ô nào đó (ô F hay ô bất kỳ) thì lại sửa lại ô đó trong code đúng không anh/chị?
Hi, nếu vậy dùng hàm sẽ tiện hơn, em thấy ở bài https://www.giaiphapexcel.com/diendan/threads/các-phương-pháp-tách-họ-và-tên-đề-nghị-post-ở-đây.426/page-24#post-942503 mà anh @ phuocam gửi em tham khảo có một số hàm rất hay và tiện, cơ động, nhưng em không chế được, hì
Xin cảm ơn anh/chị CHAOQUAY nhiều!
Bài đã được tự động gộp:

Sửa câu lệnh này (bài 12):
Arr = aplit(SArr(i, 1))

Thành thế này:
Arr = Split(SArr(i, 1))
Em chào anh, anh có thể giúp em để khi sử dụng có tính cơ động và tiện hơn chút được không ạ?
Em đánh văn bản cần dùng nhiều mà mỗi lần dùng vào code chỉnh.
 
Lần chỉnh sửa cuối:
Thân ái chào anh chị và các bạn!
Xin giúp đỡ tôi vấn đề sau:
Trong ô A1 có nội dung "Anh chẳng trở về thì anh đi đi anh nhé!".....
2_Trường hợp 2: ở ô A3 bỏ 2 từ đầu tiên chỉ lấy những từ còn lại sau khi đã bỏ 2 từ đầu tiên
Cụ thể sau khi đã bỏ 2 từ đầu tiên đi thì nội dung ô A3 sẽ lấy là :"trở về thì anh đi đi anh nhé!"
Mở rộng hơn ra nội dung ô có thể gồm nhiều từ nhưng đều lấy 02 từ đầu tiên và bỏ 02 từ đầu tiên đi
** Ghi chú: không xét đến ký tự mà chỉ xét đến từ.
Cho tôi hỏi có thể làm được như vấn đề tôi nêu không ạ? hay phải xét đến cả ký tự?
Xin cảm ơn!
A1: chứa đoạn văn bản.
C1: chứa số từ bạn muốn bỏ, tính từ đầu đoạn văn bản A1.
Mã:
B1=MID(SUBSTITUTE(A1," ","|",$C$1),FIND("|",SUBSTITUTE(A1," ","|",$C$1))+1,LEN(A1))
Enter.

Thân
 
A1: chứa đoạn văn bản.
C1: chứa số từ bạn muốn bỏ, tính từ đầu đoạn văn bản A1.
Mã:
B1=MID(SUBSTITUTE(A1," ","|",$C$1),FIND("|",SUBSTITUTE(A1," ","|",$C$1))+1,LEN(A1))
Enter.

Thân
Cảm ơn anh!
Anh đã giúp em trường hợp 2 vậy trường hợp 1 làm thế nào để nhanh nhất anh. Vì trường hợp 2 và Trường hợp 1 bù trừ cho nhau.
Chỉ lấy hai từ đầu chả hạn đó là trường hợp 1.
Anh giúp em nốt trường hợp 1 nhé!
 
Cảm ơn anh!
Anh đã giúp em trường hợp 2 vậy trường hợp 1 làm thế nào để nhanh nhất anh. Vì trường hợp 2 và Trường hợp 1 bù trừ cho nhau.
Chỉ lấy hai từ đầu chả hạn đó là trường hợp 1.
Anh giúp em nốt trường hợp 1 nhé!
Thử:
Mã:
D1=LEFT(SUBSTITUTE(A1," ","|",$C$1),FIND("|",SUBSTITUTE(A1," ","|",$C$1))-1)
Enter. Lấy theo số từ theo ô C1.

Thân
 
Cảm ơn anh!
Anh đã giúp em trường hợp 2 ..........................
Anh giúp em nốt trường hợp 1 nhé!
Trường hợp 1: Giả sử dữ liệu bắt đầu từ B2, thử hàm sau:

=IF(ISERROR(FIND(" ",B2,FIND(" ",B2,1)+1)),B2,LEFT(B2,FIND(" ",B2,FIND(" ",B2,1)+1)))

Trường hợp 2: Thử Function sau.

Mã:
Public Function TachChuoi(Chuoi As String) As String
    Dim DiaChi()    As String
    DiaChi = Split(Chuoi, " ", 3)
    TachChuoi = DiaChi(UBound(DiaChi))
End Function

Sử dụng hàm:
=TachChuoi($B2)
 
Web KT
Back
Top Bottom