Xóa dữ liệu kiểu số (1 người xem)

  • Thread starter Thread starter huy vu
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

huy vu

Thành viên hoạt động
Tham gia
29/2/12
Bài viết
164
Được thích
1
Em chào các anh/chị trên GPE.
Em có tình huống này, mong các anh/chị giúp đỡ.
Em có cột dữ liệu ngày. (trường này đang định dạng là date)
Tuy nhiên xen giữa những ngày này lại có những dữ liệu là số.
Em muốn anh/chị viết đoạn code để xóa những dữ liệu là số đi.
File mô tả đính kèm. Mong anh/chị giúp đỡ
 

File đính kèm

Em bổ sung thêm chút là dữ liệu số có thể xuất hiện đan xen ở nhiều dòng khác nhau.
Yêu cầu:
- Như bài 1, chỉ cần xóa dữ liệu là số
- Hoặc Nếu có thể thì xóa cả dòng (row) có dữ liệu số đi cũng được ạ.
Em cảm ơn!
 
Upvote 0
Em chào các anh/chị trên GPE.
Em có tình huống này, mong các anh/chị giúp đỡ.
Em có cột dữ liệu ngày. (trường này đang định dạng là date)
Tuy nhiên xen giữa những ngày này lại có những dữ liệu là số.
Em muốn anh/chị viết đoạn code để xóa những dữ liệu là số đi.
File mô tả đính kèm. Mong anh/chị giúp đỡ

Bạn đặt hàm =ISNUMBER(<value>) ở cột B trong file của bạn để check xem, mình thấy nó vẫn báo đó là giá trị số ngay cả khi bạn mong muốn nó là giá trị Ngày đó. Và nếu xóa nó đi là "toi" đấy!
 

File đính kèm

Upvote 0
Bạn đặt hàm =ISNUMBER(<value>) ở cột B trong file của bạn để check xem, mình thấy nó vẫn báo đó là giá trị số ngay cả khi bạn mong muốn nó là giá trị Ngày đó. Và nếu xóa nó đi là "toi" đấy!

Theo tôi hiểu thì bản chất date là dạng số. Như thế nó mới tính toán được. Vậy có cách nào để phân biệt date và sô để xóa dữ liệu số đi?
Cảm ơn bạn đã quan tâm và chia sẻ!
 
Upvote 0
Theo tôi hiểu thì bản chất date là dạng số. Như thế nó mới tính toán được. Vậy có cách nào để phân biệt date và sô để xóa dữ liệu số đi?
Cảm ơn bạn đã quan tâm và chia sẻ!

Mình thì "nông dân" thôi, đặt cột phụ, dùng hàm ISNUMBER -> đặt filter -> lọc lấy những giá trị TRUE (ô kiểm tra là dạng số) -> rồi delete (nội dung hoặc cả dòng) -> nhả filter là có 1 bảng ưng ý! Tương tự như file đính kèm ở post #3. Mình chỉ lưu ý bạn thận trọng khi delete như trên mà thôi.
 
Upvote 0
Mình thì "nông dân" thôi, đặt cột phụ, dùng hàm ISNUMBER -> đặt filter -> lọc lấy những giá trị TRUE (ô kiểm tra là dạng số) -> rồi delete (nội dung hoặc cả dòng) -> nhả filter là có 1 bảng ưng ý! Tương tự như file đính kèm ở post #3. Mình chỉ lưu ý bạn thận trọng khi delete như trên mà thôi.
Cách của bạn chưa giải quyết đc triệt để ạ.
Vì bản chất nhập ngày, sau đó dùng isnumber kiểu gì cũng là True, xóa hết ô trả kq true thì hỏng hết.
Tôi đang kỳ vọng các anh/chi trên gpe có đoạn code để giải bài toán này bạn ạ.
Dù sao rất cảm ơn bạn đã quan tâm.
 
Upvote 0
Mình thì "nông dân" thôi, đặt cột phụ, dùng hàm ISNUMBER -> đặt filter -> lọc lấy những giá trị TRUE (ô kiểm tra là dạng số) -> rồi delete (nội dung hoặc cả dòng) -> nhả filter là có 1 bảng ưng ý! Tương tự như file đính kèm ở post #3. Mình chỉ lưu ý bạn thận trọng khi delete như trên mà thôi.

Nếu dữ liệu số của bạn không thể chuyển sang ngày thì sẽ báo lỗi khi bạn gọi các hàm Year, Month ... về nó.
Còn nếu có thể chuyển sang ngày thì bạn phải tự làm bằng tay ^^
 
Upvote 0
Nếu dữ liệu số của bạn không thể chuyển sang ngày thì sẽ báo lỗi khi bạn gọi các hàm Year, Month ... về nó.
Còn nếu có thể chuyển sang ngày thì bạn phải tự làm bằng tay ^^
Việc chuyển về đúng dữ liệu dạng ngày thì anh/chi trên gpe đã có hướng dẫn bằng việc copy từ 1 ô trắng rồi paste special/value/add. Tôi có thể record marco đối với tình huống này. Tuy nhiên câu hỏi ở bài #2 tôi chưa có giải pháp.
Mong anh/chi hỗ trợ.
 
Upvote 0
Việc chuyển về đúng dữ liệu dạng ngày thì anh/chi trên gpe đã có hướng dẫn bằng việc copy từ 1 ô trắng rồi paste special/value/add. Tôi có thể record marco đối với tình huống này. Tuy nhiên câu hỏi ở bài #2 tôi chưa có giải pháp.
Mong anh/chi hỗ trợ.
Thử thế này coi sao
PHP:
Sub xoa()
Dim r As Long
For r = 2 To [A65536].End(3).Row
   If Not IsDate(Cells(r, 1)) Then
      Cells(r, 1).Value = ""
   End If
Next
End Sub
 
Upvote 0
Nếu được mong a QuangHai trợ giúp cho e ý 2 của bài #2 là xóa cả dòng có dữ liệu số đi luôn ạ
Em cảm ơn anh.
Chỉnh code của quanghai1969 lại 1 chút thôi.
PHP:
Public Sub Xoa()
Dim R As Long, I As Long
R = Range("A65536").End(xlUp).Row
For I = R To 2 Step -1
    If Not IsDate(Cells(I, 1)) Then Cells(I, 1).EntireRow.Delete
Next I
End Sub
 
Upvote 0
Trước tiên em thử với code của anh QuangHai, em có thêm cặp with/end with vào.
Mã:
Sub xoa()
Dim r As Long
With Sheet1
    For r = 2 To [A65536].End(3).Row
        If Not IsDate(Cells(r, 1)) Then
        Cells(r, 1).Value = ""
    End If
    Next
End With
End Sub
Anh xem cho em tình huống này.
Hiện tại đang đứng ở sheet2, mà sao chạy code để xóa ở sheet1 không được ạ?
Em cảm ơn!
 

File đính kèm

Upvote 0
Trước tiên em thử với code của anh QuangHai, em có thêm cặp with/end with vào.
Mã:
Sub xoa()
Dim r As Long
With Sheet1
    For r = 2 To [A65536].End(3).Row
        If Not IsDate(Cells(r, 1)) Then
        Cells(r, 1).Value = ""
    End If
    Next
End With
End Sub
Anh xem cho em tình huống này.
Hiện tại đang đứng ở sheet2, mà sao chạy code để xóa ở sheet1 không được ạ?
Em cảm ơn!
Phải thêm dấu chấm trước các range để xác định nó thuộc with - End with của bạn:
PHP:
Sub xoa()
Dim r As Long
With Sheet1
    For r = 2 To .[A65536].End(3).Row
        If Not IsDate(.Cells(r, 1)) Then
        .Cells(r, 1).Value = ""
        End If
    Next r
End With
End Sub
 
Upvote 0
Trời.1 dấu chấm đã thay đổi tất cả. (Chỉ với dấu . em đã nghiệm ra rất nhiều điều).
Em cảm ơn nhiều!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Trước tiên em thử với code của anh QuangHai, em có thêm cặp with/end with vào.
Mã:
Sub xoa()
Dim r As Long
With Sheet1
    For r = 2 To [A65536].End(3).Row
        If Not IsDate(Cells(r, 1)) Then
        Cells(r, 1).Value = ""
    End If
    Next
End With
End Sub
Anh xem cho em tình huống này.
Hiện tại đang đứng ở sheet2, mà sao chạy code để xóa ở sheet1 không được ạ?
Em cảm ơn!
bạn sửa vậy là sai rồi cú sử dụng code của Anh Ba Tê hay Anh Quanghai1969 đi ..hai code đó có cái HAY riêng của nó đấy bạn
 
Lần chỉnh sửa cuối:
Upvote 0
bạn sửa vậy là sai rồi cú sử dụng code của Anh Ba Tê hay Anh Quanghai1969 đi ..hai code đó có cái HAY riêng của nó đấy bạn
Cảm ơn anh, em sử dụng cả 2 mà, toàn các code hay để học tập ạ.
Anh QuangHai thì chạy từ trên xuống dưới, còn bác Ba Tê lại ngược từ dưới lên trên. Đúng là muôn mầu muôn vẻ.
Em cảm ơn 2 anh.
 
Upvote 0
Cảm ơn anh, em sử dụng cả 2 mà, toàn các code hay để học tập ạ.
Anh QuangHai thì chạy từ trên xuống dưới, còn bác Ba Tê lại ngược từ dưới lên trên. Đúng là muôn mầu muôn vẻ.
Em cảm ơn 2 anh.

Có các bác cao thủ hỗ trợ thì tốt rồi, nhưng bạn phải có kiến thức cơ bản về lập trình VBA thì mới có thể so sánh, đánh giá và chọn cách xử lý tối ưu nhất.
 
Upvote 0

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

Back
Top Bottom