Giúp đỡ cách tách số từ dãy số có sẵn

  • Thread starter Thread starter hml89
  • Ngày gửi Ngày gửi
Liên hệ QC

hml89

Thành viên tiêu biểu
Tham gia
14/9/12
Bài viết
526
Được thích
392
Giới tính
Nam
Xin chào tất cả anh, chị , em

Nhờ các anh, chị , em hướng dẫn giúp tôi cách tách lấy số lượng là ngày tháng năm trong dãy số, bằng công thức hoặc code đều được ạ
TV-10-N-13/1/18 => số lượng =10, ngày tháng bằng 13/1/18
LT-20-X-19/2/18=> số lượng = 20, ngày tháng bằng 19/2/18
LCD-10-N-18/3/18=> số lượng = 10, ngày tháng bằng 18/3/18
BU-25-N-28/2/18 => số lượng bằng 25, ngày tháng bằng 28/2/18

Trân thành cám ơn!
 
Cách 1: Flash Fill

(tốn khoảng 9 giây rưỡi).
 
Xin chào tất cả anh, chị , em

Nhờ các anh, chị , em hướng dẫn giúp tôi cách tách lấy số lượng là ngày tháng năm trong dãy số, bằng công thức hoặc code đều được ạ
TV-10-N-13/1/18 => số lượng =10, ngày tháng bằng 13/1/18
LT-20-X-19/2/18=> số lượng = 20, ngày tháng bằng 19/2/18
LCD-10-N-18/3/18=> số lượng = 10, ngày tháng bằng 18/3/18
BU-25-N-28/2/18 => số lượng bằng 25, ngày tháng bằng 28/2/18

Trân thành cám ơn!
Nếu dữ liệu nhập vào theo đúng khuôn dạng như vậy thì bạn dùng công thức sau (giả sử chuỗi ban đầu nằm ở ô A2):
- Số lượng: =--MID(A2,FIND("-",A2)+1,FIND("-",A2,FIND("-",A2)+1)-FIND("-",A2)-1)
- Ngày tháng: =SUBSTITUTE(RIGHT(A2,8),"-","")

Cách khác là copy sang cột mới rồi sử dụng Text to Columns.
 
Xin chào tất cả anh, chị , em

Nhờ các anh, chị , em hướng dẫn giúp tôi cách tách lấy số lượng là ngày tháng năm trong dãy số, bằng công thức hoặc code đều được ạ
TV-10-N-13/1/18 => số lượng =10, ngày tháng bằng 13/1/18
LT-20-X-19/2/18=> số lượng = 20, ngày tháng bằng 19/2/18
LCD-10-N-18/3/18=> số lượng = 10, ngày tháng bằng 18/3/18
BU-25-N-28/2/18 => số lượng bằng 25, ngày tháng bằng 28/2/18

Trân thành cám ơn!
1 cách
Giả sử dữ liệu của bạn có trong cột A, bắt đầu từ A1, thử
PHP:
Sub abc()
    Dim i&, LR&
    Application.ScreenUpdating = False
    With ActiveSheet
        LR = .Cells(Rows.Count, "A").End(3).Row
        For i = 1 To LR
            .Range("C" & i) = Split(.Range("A" & i), "-")(1)
            .Range("D" & i) = Split(.Range("A" & i), "-")(3)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
 
Nếu dữ liệu nhập vào theo đúng khuôn dạng như vậy thì bạn dùng công thức sau (giả sử chuỗi ban đầu nằm ở ô A2):
- Số lượng: =--MID(A2,FIND("-",A2)+1,FIND("-",A2,FIND("-",A2)+1)-FIND("-",A2)-1)
- Ngày tháng: =SUBSTITUTE(RIGHT(A2,8),"-","")

Cách khác là copy sang cột mới rồi sử dụng Text to Columns.
Xin cám ơn bạn đã giúp đỡ tôi!
 
1 cách
Giả sử dữ liệu của bạn có trong cột A, bắt đầu từ A1, thử
PHP:
Sub abc()
    Dim i&, LR&
    Application.ScreenUpdating = False
    With ActiveSheet
        LR = .Cells(Rows.Count, "A").End(3).Row
        For i = 1 To LR
            .Range("C" & i) = Split(.Range("A" & i), "-")(1)
            .Range("D" & i) = Split(.Range("A" & i), "-")(3)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
Xin cám ơn bạn đã giúp đỡ, kết quả đúng như mong đợi.
Bài đã được tự động gộp:

Híc (thấy 4 cái Find nhìn hơi sợ). Nếu công thức thì như vầy:
Mã:
=1*MID(SUBSTITUTE(A1,"-",REPT(" ",300)),300,200)
=TRIM(RIGHT(SUBSTITUTE(A1,"-",REPT(" ",300)),300))
Xin cám ơn bạn. Mọi người thật giỏi, ngưỡng mộ quá!
Bài đã được tự động gộp:

1 cách
Giả sử dữ liệu của bạn có trong cột A, bắt đầu từ A1, thử
PHP:
Sub abc()
    Dim i&, LR&
    Application.ScreenUpdating = False
    With ActiveSheet
        LR = .Cells(Rows.Count, "A").End(3).Row
        For i = 1 To LR
            .Range("C" & i) = Split(.Range("A" & i), "-")(1)
            .Range("D" & i) = Split(.Range("A" & i), "-")(3)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
xin chào bạn @phulien1902 , bạn cho tôi hỏi 1 chút là cái (1) và (3), của 2 dòng split nghĩa là gì vậy nhỉ. Tôi được biết là Split là dùng để tách chuỗi. Split(chuỗi để chia thành chuỗi con,"-" dấutrừ này để nhận biết dấu hiệu chia chuỗi) còn số đằng sau tôi không hiểu . Mong nhận được sự chỉ dạy của bạn.
 
Lần chỉnh sửa cuối:
xin chào bạn @phulien1902 , bạn cho tôi hỏi 1 chút là cái (1) và (3), của 2 dòng split nghĩa là gì vậy nhỉ. Tôi được biết là Split là dùng để tách chuỗi. Split(chuỗi để chia thành chuỗi con,"-" dấutrừ này để nhận biết dấu hiệu chia chuỗi) còn số đằng sau tôi không hiểu . Mong nhận được sự chỉ dạy của bạn.
Anh chàng Split sẽ tách chuỗi TV-10-N-13/1/18 thành 4 chuỗi con và đánh thứ tự cho chúng là 0, 1, 2, 3. Trong đó 1 tương ứng với chuỗi "10", còn 3 tương ứng với chuỗi "13/1/18".
 
Anh chàng Split sẽ tách chuỗi TV-10-N-13/1/18 thành 4 chuỗi con và đánh thứ tự cho chúng là 0, 1, 2, 3. Trong đó 1 tương ứng với chuỗi "10", còn 3 tương ứng với chuỗi "13/1/18".
Xin cám ơn bạn , tôi đã hiều rồi. Tuy nhiên có 1 vấn đền là 1 chuỗi, có rất nhiều dấu "-", thì làm sao mà biết được cái mình cần là ở vị trí thứ bao nhiêu để có thể ghi được vậy. Như dãy trên, tôi có thể nhìn mắt thường được là nó sẽ tách được 4 chuỗi con, cách nhau bởi dấu "-".
Chúc bạn và mọi người buổi tối vui vẻ!
 
Xin cám ơn bạn , tôi đã hiều rồi. Tuy nhiên có 1 vấn đền là 1 chuỗi, có rất nhiều dấu "-", thì làm sao mà biết được cái mình cần là ở vị trí thứ bao nhiêu để có thể ghi được vậy. Như dãy trên, tôi có thể nhìn mắt thường được là nó sẽ tách được 4 chuỗi con, cách nhau bởi dấu "-".
Chúc bạn và mọi người buổi tối vui vẻ!
Câu hỏi như thế nào thì câu trả lời như thế đó, vì dữ liệu bạn minh họa ở đầu topic đều có cấu trúc như vậy nên các phương án đều dùng để giải quyết cho dữ liệu đó. Nếu chuỗi có cấu trúc khác thì tất nhiên là cách giải phải khác rồi.
 
Câu hỏi như thế nào thì câu trả lời như thế đó, vì dữ liệu bạn minh họa ở đầu topic đều có cấu trúc như vậy nên các phương án đều dùng để giải quyết cho dữ liệu đó. Nếu chuỗi có cấu trúc khác thì tất nhiên là cách giải phải khác rồi.
Chỉ là đột nhiên tôi nghĩ ra như vậy thôi, với giải pháp của các bạn đưa ra là hoàn hảo với tôi rồi.
Xin cám ơn!
 
Web KT

Bài viết mới nhất

Back
Top Bottom