0o -.......Forum 361dodesign.com.......- o0
Hãy tham gia diễn đàn 361dodesign ngay hôm nay và hãy đăng ký thành viên để có thể xem hiển thị hết diễn đàn + links download + và chia sẻ kinh nghiệm..v..v..!!!!!!!!!!!!!!!!!!!!!!
Chúc các bạn một ngày vui vẻ..
0o -.......Forum 361dodesign.com.......- o0
Hãy tham gia diễn đàn 361dodesign ngay hôm nay và hãy đăng ký thành viên để có thể xem hiển thị hết diễn đàn + links download + và chia sẻ kinh nghiệm..v..v..!!!!!!!!!!!!!!!!!!!!!!
Chúc các bạn một ngày vui vẻ..
0o -.......Forum 361dodesign.com.......- o0
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

0o -.......Forum 361dodesign.com.......- o0

Dịch vụ Thiết kế - In ấn - In Offset - Thế giới Thiết kế - Download phần mềm - Download Vector Free - Hỗ trợ Forum
 
Trang ChínhGalleryLatest imagesTìm kiếmĐăng kýĐăng Nhập

 

 Trích xuất dữ liệu số trong 1 chuỗi bằng VBA

Go down 
Tác giảThông điệp
lamthaiql87

lamthaiql87


Tổng số bài gửi : 201
Điểm tích lũy : 4977
Thích : 0
Tham gia : 10/02/2012

Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Empty
Bài gửiTiêu đề: Trích xuất dữ liệu số trong 1 chuỗi bằng VBA   Trích xuất dữ liệu số trong 1 chuỗi bằng VBA EmptyMon Feb 27, 2012 11:53 am






  1. Các
    giá trị số (number) trong Excel được mặc định canh lề phải và văn bản
    (text) thì canh lế trái. Do vậy, cách đơn giản để nhận biết các giá trị
    số và văn bản trong một cột trên bảng tính là bạn thiết lập chế độ canh
    lề mặc định cho cột đó. Bạn vào Home ➝ nhóm Alignment ➝ chọn Format
    Cells ➝ vào ngăn Alignment (E2003: Format ➝ Cells ➝ Alignment) ➝ chọn
    General tại hộp Horizontal để thiết lập việc canh lề mặc định cho cột
    đang chọn ➝ nhấn OK để đóng hộp thoại Format Cells lại.

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA H27_01

    Bạn kéo cột rộng ra một ít để đễ phân biệt việc canh lề, khi đó bạn sẽ
    thấy các giá trị số, ngày tháng sẽ được canh lề phải và văn bản sẽ được
    canh lề trái.

    Dùng Paste Special để chuyển giá trị số dạng văn bản sang số thực


    Đây là cách nhanh và dễ dàng nhất để chuyển các giá trị số dang văn bản sang số thực. Các bước thực hiện như sau:

    Chọn một ô trống nào đó và nhấn lệnh Copy (Ctrl + C)➝ quét chọn vùng số
    liệu dạng văn bản định chuyển đổi (ví dụ như vùng A1:A9 ở hình trên) ➝
    nhấp phải chuột và chọn Paste Special… ➝ chọn Add tại nhóm Operation ➝
    nhấn OK để hoàn tất.

    Việc làm trên sẽ giúp chuyển toàn số các con số dạng văn bản sang số
    thực, vì ô rỗng có giá trị là 0 và khi bạn cộng bất kỳ số nào vào một
    con số lưu dưới dạng văn bản trong Excel thì bạn đã làm cho con số dạng
    văn bản chuyển thành số thực.

    Dùng các hàm TEXT để chuyển đổi

    Bạn có thể áp dụng nguyên tắc như cách trên vào một số hàm có sẵn của
    Excel để thực hiện việc chuyển đổi. Thông thường, khi bạn dùng một hàm
    thuộc nhóm TEXT và kết quả trả về dưới dạng con số thì Excel vẫn xem con
    số đó là giá trị dạng văn bản.

    Giả sử bạn có một vùng dữ liệu A1:A7 như hình sau:

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA H27_02

    Bạn dùng hai hàm trong nhóm TEXT là LEFT và FIND để tách các giá trị ra khỏi các chuỗi văn bản như sau:

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA H27_03

    =LEFT(A1,FIND(" ",A1)-1)

    Sau khi dùng hàm để tách phần giá trị ra thì các kết quả trả về vẫn được
    Excel xem như là văn bản vì chúng được canh lề trái như hình sau:

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA H27_04

    Do vậy, bạn cần phải hiệu chỉnh công thức tác chuỗi trên một ít để kết
    quả trả về là các con số thực sự bằng cách cộng thêm số 0 vào sau công
    thức trên:

    =LEFT(A1,FIND(" ",A1)-1) + 0

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA H27_05


    MỤC LỤC Những tuyệt chiêu trong Excel














    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Paperclip Tập tin đính kèm



    • Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Zip
      Hack27.zip
      (4.8 KB, 2284 lần tải)
















thay đổi nội dung bởi: BNTT, 23-11-08 lúc 11:09 PM








Danh mục bài viết tổng hợp của GPE | Mỗi ngày một "tuyệt chiêu" | Hướng dẫn sử dụng Crystal Ball |
Giáo trình: Excel 2007 | Excel trong kinh tế Phần 1 | Phần 2 | PowerPoint 2010
Linh tinh: SubTotal | Hàm & Công thức mảng | Offset | Excel 97-2003 Options | Các loại tham chiếu | Vẽ biểu đồ | Custom Format | Khoá & mở khoá tập tin Excel | Định dạng theo điều kiện
Câu đố: 1 | 2 | 3 | 4 | 5 ...













Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Clear Trả Lời Với Trích Dẫn


































  • Có 46 thành viên cảm ơn TranThanhPhong về bài viết này:










    246hanguyen,

    abc 2009,

    anguyen,

    ararechan,

    bienthuy,

    binhan007,

    binhnvvn,

    BNTT,

    bongcnhh,

    carrotchip,

    cadafi,

    cuongnt63,

    damsan1989,

    dohuuthuc,

    Harry_Potter,

    hatnang87,

    hoanbt,

    Hoàng Trọng Nghĩa,

    honeyphuc84,

    hong gam,

    HUE2007,

    hung127,

    hylam,

    jnho,

    jv251285,

    knthanhkim,

    Maria2005,

    ngocthegian,

    nhâm quân,

    nonzero,

    phamducthuandv,

    Po_Pikachu,

    rockaruouaem,

    sihau,

    songvui,

    son_sajv,

    TEX,

    thanhsonhanhngo,

    thehungqnu,

    thuysonphuong,

    titan_gpe,

    tranphongvu,

    tungnguyen1045,

    vinhsonghinh,

    welcome2mylife,

    Xung_Doanh












  • 16-11-08, 09:50 PM




    #33














    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Image








    ptm0412





    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA User-offline




    Excel Ordinary Member


    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA PipTrích xuất dữ liệu số trong 1 chuỗi bằng VBA PipTrích xuất dữ liệu số trong 1 chuỗi bằng VBA PipTrích xuất dữ liệu số trong 1 chuỗi bằng VBA PipTrích xuất dữ liệu số trong 1 chuỗi bằng VBA Pip








    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Im_yahoo

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Ptm0412








    Tham gia ngày11 2007Nơi Cư NgụGò VấpBài gởi6,511Cảm ơn3,567Được cảm ơn 16,636 lần trong 5,794 bài viết




















    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA ALL
    Chiêu 28: Trích xuất dữ liệu số trong 1 chuỗi bằng VBA


    Bạn thường lấy dữ liệu từ nguồn ngoài, chẳng hạn từ Internet, trong đó
    có dữ liệu số xen lẫn chữ như: “1,254.00VND” hoặc “USD 2,500.00”, thậm
    chí còn phức tạp hơn.
    Và cũng có khi bạn đã nhập liệu hỗn hợp text và số không theo quy luật
    nào để có thể lấy riêng số ra bằng các hàm tách chuỗi thông thường.
    Dùng 1 hàm tự tạo viết bằng VBA, bạn có thể trích xuất riêng phần số ra, dù cho chuỗi có kiểu dạng gì đi nữa.
    Bạn hãy nhấn Alt-F11 để vào cửa sổ VBA, insert 1 module và dán đoạn code sau vào:




    PHP Code:


    Function ExtractNumber(rCell As Range)

    Dim lCount As Long

    Dim sText
    As String

    Dim lNum
    As String

    sText
    = rCell

    For lCount = Len(sText) To 1 Step -1

    If IsNumeric(Mid(sText, lCount, 1)) Then

    lNum
    = Mid(sText, lCount, 1) & lNum

    End
    If

    Next lCount

    ExtractNumber
    = CLng(lNum)

    End Function





    Vào lại Excel, trong ô B1 gõ dữ liệu số xen lẫn text tuỳ ý, trong ô kế bên C1 gõ công thức:
    =ExtractNumber(B1)
    Ta sẽ có kết quả như hình:


    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Hack28-01

    Bổ sung:

    Vẫn còn chút vấn đề: nếu dữ liệu là số thập phân như ô B5, hoặc dữ liệu
    gồm 2 nhóm số riêng biệt trở lên như ô B4, kết quả sẽ không như ý muốn.

    1. Để giải quyết vấn đề số thập phân, ptm0412 có 1 hàm khác:





    PHP Code:


    Function CtoN(Mystr As String, Optional Dautp As String) As Double

    Dim Kqng
    , Kqtp, Neg As Double, Kqtam As String

    Dim Sotp
    As Double, Le As Byte

    Neg
    = 1

    Le
    = 0

    For i = 1 To Len(Mystr)

    tam = Mid(Mystr, i, 1)

    Select Case tam

    Case 0 To 9

    Kqtam
    = Kqtam & tam

    Case "-"

    Neg = -1

    Case Dautp

    Kqng
    = Kqtam

    Le
    = 1

    Mystr
    = Right(Mystr, Len(Mystr) - i)

    Kqtp = CtoN(Mystr)

    Sotp = Kqtp * 10 ^ (-Len(Kqtp))

    End Select

    Next i

    Select
    Case Le

    Case 0

    CtoN
    = IIf(Kqtam = "", 0, Kqtam)

    Case
    1

    CtoN
    = Kqng + Sotp

    End Select

    CtoN
    = CtoN * Neg

    End
    Function





    Ghi chú:- Khi sử dụng hàm này, bạn sẽ thêm vào hàm 1 tham số cho
    biết dấu thập phân là dấu nào, “,” hay “.”. Thí dụ =CtoN(“USD
    14255.20”,”.”), và nếu bạn biết chắc là số nguyên thì không cần thêm.
    - Hàm này đọc được cả số âm nếu ký hiệu số âm là dấu trừ và đứng trước số.

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Hack28-02
    2. Để giải quyết vấn đề nhiều nhóm số khác nhau trong chuỗi, Ptm0412 cũng có 1 hàm:




    PHP Code:


    Function CtoNPlus(Mystr As String, sttchuoi As Byte, Optional Dautp As String) As Double

    Newstr
    = Mystr

    For i = 1 To sttchuoi

    If Len(Newstr) < 2 Then Exit For

    CtoNPlus = CtoN1st(Newstr, Dautp)

    Next i

    Newstr
    = ""

    End Function








    PHP Code:


    Function CtoN1st(ByVal Mystr As String, Optional Dautp As String) As Double

    Dim Kqng
    , Kqtp, Neg As Double, Kqtam As String

    Dim Sotp
    As Double, Le As Byte, NewStr2 As String

    Neg
    = 1

    Le
    = 0

    For i = 1 To Len(Mystr)

    tam = Mid(Mystr, i, 1)

    Select Case tam

    Case 0 To 9

    Kqtam
    = Kqtam & tam

    If IsNumeric(Mid(Mystr, i + 1, 1)) = False And _

    Mid
    (Mystr, i + 1, 1) <> "," And Mid(Mystr, i + 1, 1) <> "." Then

    Newstr
    = Right(Mystr, Len(Mystr) - i)


    Exit For

    End If

    Case
    "-"

    Neg = -1

    Case Dautp

    Kqng
    = Kqtam

    Le
    = 1

    NewStr2
    = Right(Mystr, Len(Mystr) - i)

    Kqtp = CtoN1st(NewStr2)

    Sotp = Kqtp * 10 ^ (-Len(Kqtp))


    End Select

    Next i

    Select
    Case Le

    Case 0

    CtoN1st
    = IIf(Kqtam = "", 0, Kqtam)

    Case
    1


    CtoN1st
    = Kqng + Sotp

    End Select

    CtoN1st
    = CtoN1st * Neg

    End
    Function






    Cú pháp hàm: CtoNPlus(Mystr , sttchuoi, [Dautp])
    Sttchuoi là số thứ tự nhóm số trong chuỗi, Dautp là ký tự dấu phân cách thập phân.

    Xem file kèm theo.

    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Hack28-03


    MỤC LỤC Những tuyệt chiêu trong Excel














    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Paperclip Tập tin đính kèm



    • Trích xuất dữ liệu số trong 1 chuỗi bằng VBA Xls
      ExtractNumber.xls
      (41.5 KB, 2027 lần tải)

  • Về Đầu Trang Go down
     
    Trích xuất dữ liệu số trong 1 chuỗi bằng VBA
    Về Đầu Trang 
    Trang 1 trong tổng số 1 trang
     Similar topics
    -
    » Tìm dữ liệu xuất hiện 2 hoặc nhiều lần bằng công cụ Conditional Formating
    » Cứu dữ liệu từ một bảng tính bị lỗi
    »  Kiểm tra file trước khi xuất phim bằng Corel
    » Kiểm tra file trước khi xuất phim bằng Corel
    » Bẫy lỗi để trống dữ liệu

    Permissions in this forum:Bạn không có quyền trả lời bài viết
    0o -.......Forum 361dodesign.com.......- o0  :: Phần mềm ứng Văn Phòng :: Tin học văn phòng - Microsoft Office :: Microsoft Office Excel-
    Chuyển đến