Mừng Sinh Nhật GPE 11: sáng 25/6 Hà Nội; 1/7 Huế/Đà Nẵng; Trưa 2/7 TPHCM

Nhờ các thầy giúp hộ mình hàm tách ngày tháng trong chuỗi !

Thảo luận trong 'Làm việc với ngày tháng và thời gian' bắt đầu bởi khocthet296, 8 Tháng bảy 2011.

  1. khocthet296

    khocthet296 Thành viên mới

    Xin nhờ các thầy chỉ giáo hộ mình 1 hàm tách ngày tháng trong chuỗi được phân biệt bởi dấu "_" 2 đầu ngày tháng trong 1 chuỗi.
    ví dụ như abcd_08/07/2011_xyz. mình cần lấy ra đoạn chuỗi chứa ngày tháng năm.
    có ví dụ trong file đính kèm.

    Xin cám ơn các thầy rất nhiều.
     

    Các file đính kèm:

  2. bebo021999

    bebo021999 Thành viên gắn bó

    Nếu độ dài chuỗi không cố định, dùng cái này nhé:
    Mã:
    =--MID(A1,FIND("_",A1,1)+1,FIND("_",A1,FIND("_",A1,1)+1)-FIND("_",A1,1)-1)
     
    Lần chỉnh sửa cuối: 8 Tháng bảy 2011
  3. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Nếu dữ liêu luôn có cấu trúc như trong file, tức:
    xxx_dd/mm/yyyy_hh:mm:ss thì công thức tại B1 sẽ là
    PHP:
    =DATE(MID(A1,11,4),MID(A1,8,2),MID(A1,5,2))
    Còn cái này:
    Chắc chắn sẽ sai trên 1 số máy tính nào đó mà Control Panel không định dạng theo dd/mm/yyyy
     
  4. nghiaphuc

    nghiaphuc Hoàng Nghĩa Phúc Staff Member

    Bài này không cần dùng hàm tự tạo đâu bạn, chỉ cần sử dụng hàm sẵn có của Excel thôi. Chẳng hạn có thể dùng 1 trong 2 công thức sau cho hàng 1, sau đó định dạng lại cách hiển thị:
    Mã:
    =DATEVALUE(MID(A1,FIND("_",A1)+1,10))
    =MID(A1,FIND("_",A1)+1,10)*1
    hoặc tổng quát hơn (cho trường hợp ngày không nhập đủ dạng dd/MM/yyyy hoặc MM/dd/yyyy):
    Mã:
    =DATEVALUE(MID(A1,FIND("_",A1)+1,FIND("_",A1,FIND("_",A1)+1)-FIND("_",A1)-1))
    =MID(A1,FIND("_",A1)+1,FIND("_",A1,FIND("_",A1)+1)-FIND("_",A1)-1)*1
    Tuy nhiên, mình cũng còn vướng một vấn đề nữa là: Có công thức nào luôn cho kết quả đúng mà không phụ thuộc vào thiết lập ngày tháng trong Control Panel không? Chẳng hạn, công thức trên chỉ cho kết quả đúng nếu dữ liệu được nhập trên file và thiết lập ngày tháng trong Control Panel đều có dạng dd/MM/yyyy hoặc MM/dd/yyyy.
     
  5. hoamattroicoi

    hoamattroicoi 一人で Staff Member

    Xem file đính kèm nhé!
     

    Các file đính kèm:

  6. SA_DQ

    SA_DQ Thành viên danh dự

    Bài sai BOX

    Như các bạn trước trả lời thì bài của chúng ta lập sai BOX rồi;

    Thứ nữa, thời giờ trong chuỗi chưa khẳng định 01 cách chắc chắn là theo hệ Mẽo hay hệ Fáp đó bạn nha!

    --=0 --=0 --=0
     
  7. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Công thức đúng nhất là công thức dùng hàm DATE
     
  8. khocthet296

    khocthet296 Thành viên mới

    rất cảm ơn các thầy đã giúp đỡ :D
     
  9. nguyenducthanh.bacninh

    nguyenducthanh.bacninh Thành viên mới

    Bạn có thể dùng hàm =MID(A1,5,10)
     
  10. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Bạn có chắc công thức của bạn cho kết quả là NGÀY THÁNG THẬT SỰ không?
     
  11. Ba Tê

    Ba Tê Cạo Rồi Khỏi Gội

    Nếu dữ liệu có cấu trúc : *_dd/mm/yyyy_hh:mm:ss
    Không biết ndu có chiêu nào gọn hơn thế này không nhỉ? Công thức "tành bành" luôn không xài Name nhé.
    PHP:
    =DATE(MID(A1;FIND("_";A1)+7;4);MID(A1;FIND("_";A1)+4;2);MID(A1;FIND("_";A1)+1;2))
    Tôi thật sự muốn học hỏi chứ không có ý khác, nếu lấy ra 1 chuỗi text thì dễ rồi.
     
  12. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Vậy là ổn rồi ---> Dù gì thì ta cũng sẽ dùng 1 trong 2 cách sau đây:
    - Dùng hàm Date với các thông số Year, Month, Day
    - Tách và ghép chuổi theo cú pháp yyyy & "/" & mm & "/" & dd rồi nhân chuổi này với số 1
     
  13. ah_oliver84

    ah_oliver84 Thành viên mới

    Đồng ý với bác...
    Em cũng có thời gian phát khóc về xử lý ngày, tháng...nên giờ có chút kinh nghiệm sương máu!
     
  14. phihndhsp

    phihndhsp Thành viên gắn bó

    Áp dụng với bài này sao mình không thử dùng Text To Columns
     
  15. tvkim007

    tvkim007 Thành viên mới

    Còn nếu ngày tháng năm dính liền thì làm thế nào mọi người. ví dụ 02102012 cần đổi ra 02/10/2012. Cần gấp gấp. Cảm ơn!
     
  16. quanghai1969

    quanghai1969 Thành viên gạo cội


    Nếu dữ liệu đang tại A1

    =LEFT(A1,2)&"/"&MID(A1,3,2)&"/"&RIGHT(A1,4)
     
  17. tvkim007

    tvkim007 Thành viên mới

    cuslàm đc rồi. haha. Bôi đen cột đó chuột phải> Format cell >Spieal>social security number .
    Chọn thẻ Custom> sửa lại thành 00-00-0000 hoặc j tỳ thích. OK
    Thành công rồi!
     
  18. sealand

    sealand Thành viên gạo cội

    Mình dung công thức sau vẫn cho kết quả đúng khi thay đổi format date trong Control panel. Các bạn test giùm xen sao:

    =MID(A2,FIND("_",A2,1)+1,10)*1
     

Chia sẻ trang này