Mình cần giúp đỡ về Đổi dữ liệu từ text sang số

Liên hệ QC

nhimna

Thành viên mới
Tham gia
22/2/08
Bài viết
3
Được thích
0
Mình có phần mềm khi xuất file ra thì các chữ số bằng tiền có dấu cách mà các ô này lại nằm rải rác lung tung trong file. Mỗi lần mình xuất file mình phải tìm ô dạng số rồi tìm kiếm thay thế dấu cách thành ô trống để các chữ số liền nhau và dữ liệu chuyển về dạng số. Mình muốn viết một đoạn macro để làm việc này nhưng chưa biết làm thế nào? nhờ các cao thủ giúp đỡ
 

File đính kèm

  • du lieu vi du.xlsx
    11 KB · Đọc: 11
Mình có phần mềm khi xuất file ra thì các chữ số bằng tiền có dấu cách mà các ô này lại nằm rải rác lung tung trong file. Mỗi lần mình xuất file mình phải tìm ô dạng số rồi tìm kiếm thay thế dấu cách thành ô trống để các chữ số liền nhau và dữ liệu chuyển về dạng số. Mình muốn viết một đoạn macro để làm việc này nhưng chưa biết làm thế nào? nhờ các cao thủ giúp đỡ
Dùng code này xem thế nào?
Mã:
Sub GPE()
Dim Rng As Range, cRng As Range, s As String
Set Rng = Sheet1.UsedRange.SpecialCells(xlCellTypeConstants)
If Rng Is Nothing Then Exit Sub
    For Each cRng In Rng
        s = WorksheetFunction.Trim(cRng.Value)
        s = Replace(s, " ", "")
        If Val(s) <> 0 Then
            cRng.Value = Val(s)
            cRng.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)"
        End If
    Next cRng
    MsgBox "Da thuc hien xong", vbExclamation, "---GPE---"
End Sub
 
Mình có phần mềm khi xuất file ra thì các chữ số bằng tiền có dấu cách mà các ô này lại nằm rải rác lung tung trong file. Mỗi lần mình xuất file mình phải tìm ô dạng số rồi tìm kiếm thay thế dấu cách thành ô trống để các chữ số liền nhau và dữ liệu chuyển về dạng số. Mình muốn viết một đoạn macro để làm việc này nhưng chưa biết làm thế nào? nhờ các cao thủ giúp đỡ
Một cách nhanh nhất là làm thế này:
Nhấn giữ nút Ctrl rồi click chọn từng Cell cần bỏ dấu cách, sau đó Ctrl + H, cửa sổ hiện ra chọn tab Replace, click vào khung Find what và nhấn phím dài và nhấn Replace All > OK.
Tiếp theo click phải Format Cells và định dạng theo ý muốn thế là xong.
 
Một cách nhanh nhất là làm thế này:
Nhấn giữ nút Ctrl rồi click chọn từng Cell cần bỏ dấu cách, sau đó Ctrl + H, cửa sổ hiện ra chọn tab Replace, click vào khung Find what và nhấn phím dài và nhấn Replace All > OK.
Tiếp theo click phải Format Cells là xong.
Cách này chỉ một vài ô thì được, còn một mâm thì không khả thi anh ơi.
 
Cách này chỉ một vài ô thì được, còn một mâm thì không khả thi anh ơi.
Vì trong File có 2 cái bảng thì làm vậy cho nhanh (khỏi cần code), bài 1 họ đâu có nêu một mâm hay nhiều bảng đâu? Khi nào không đúng ý thì tự khắc họ la lên thôi..
 
Dùng code này xem thế nào?
Mã:
Sub GPE()
Dim Rng As Range, cRng As Range, s As String
Set Rng = Sheet1.UsedRange.SpecialCells(xlCellTypeConstants)
If Rng Is Nothing Then Exit Sub
    For Each cRng In Rng
        s = WorksheetFunction.Trim(cRng.Value)
        s = Replace(s, " ", "")
        If Val(s) <> 0 Then
            cRng.Value = Val(s)
            cRng.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)"
        End If
    Next cRng
    MsgBox "Da thuc hien xong", vbExclamation, "---GPE---"
End Sub
Mình cảm ơn nhé.
Bài đã được tự động gộp:

Một cách nhanh nhất là làm thế này:
Nhấn giữ nút Ctrl rồi click chọn từng Cell cần bỏ dấu cách, sau đó Ctrl + H, cửa sổ hiện ra chọn tab Replace, click vào khung Find what và nhấn phím dài và nhấn Replace All > OK.
Tiếp theo click phải Format Cells và định dạng theo ý muốn thế là xong.
Do dữ liệu có nhiều file khác nhau nhiều sheet khác nhau mà làm thế này thì lâu nên e ko muốn mà muốn sử dụng macro để bấm cho nhanh ạ. E cảm ơn nhé
Bài đã được tự động gộp:

Vì trong File có 2 cái bảng thì làm vậy cho nhanh (khỏi cần code), bài 1 họ đâu có nêu một mâm hay nhiều bảng đâu? Khi nào không đúng ý thì tự khắc họ la lên thôi..
Ví dụ e làm một vài cái thôi nhưng dữ liệu của e thì cả mâm đấy ạ khoảng vài chục ngàn dòng hic hic
 
Dùng code này xem thế nào?
Mã:
Sub GPE()
Dim Rng As Range, cRng As Range, s As String
Set Rng = Sheet1.UsedRange.SpecialCells(xlCellTypeConstants)
If Rng Is Nothing Then Exit Sub
    For Each cRng In Rng
        s = WorksheetFunction.Trim(cRng.Value)
        s = Replace(s, " ", "")
        If Val(s) <> 0 Then
            cRng.Value = Val(s)
            cRng.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)"
        End If
    Next cRng
    MsgBox "Da thuc hien xong", vbExclamation, "---GPE---"
End Sub
Hình như dùng Val thì không cần đến Trim hay Replace. Bạn thử xem đúng không
 
Dùng code này xem thế nào?
Mã:
Sub GPE()
Dim Rng As Range, cRng As Range, s As String
Set Rng = Sheet1.UsedRange.SpecialCells(xlCellTypeConstants)
If Rng Is Nothing Then Exit Sub
    For Each cRng In Rng
        s = WorksheetFunction.Trim(cRng.Value)
        s = Replace(s, " ", "")
        If Val(s) <> 0 Then
            cRng.Value = Val(s)
            cRng.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)"
        End If
    Next cRng
    MsgBox "Da thuc hien xong", vbExclamation, "---GPE---"
End Sub
Hàm chạy được nhưng hơi chậm ạ. Với lại E có những số nó là ngày tháng hoặc là mã số dạng 123.456.789 là mã số của mặt hàng thì nó cũng chuyển luôn thành số là 123.456 làm thế nào để nó chỉ chuyển số tiền hoặc số có 1 dấu thập phân thôi thành số ạ ví dụ số 65.2 thì đổi thành số còn số 654.321.987 thì giữ nguyên vì đây là dãy mã số mặt hàng của e ạ
Bài đã được tự động gộp:

Hình như dùng Val thì không cần đến Trim hay Replace. Bạn thử xem đúng không
Vâng không dùng trim và Replace thì hàm vẫn chạy được ạ
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom