Thay đổi văn bản thành số bằng VBA
Trong một nhiệm vụ gần đây, tôi đang thực hiện lọc qua VBA trên một cột số. Nhưng cột số đó có số ở định dạng văn bản. Khi tôi chạy tập lệnh VBA, tất nhiên nó không hoạt động, vì bộ lọc là một số và cột có số dưới dạng văn bản. Trong trường hợp đó, tôi cần chuyển đổi văn bản thành số theo cách thủ công và lưu nó. Sau đó, macro hoạt động hoàn hảo.
Nhưng tôi muốn chuyển những văn bản này thành số bằng cách sử dụng tập lệnh VBA và tôi đã có thể làm được. Tôi muốn chia sẻ điều này như thể bất kỳ ai muốn biết cách chuyển đổi các giá trị văn bản thành một số bằng VBA, họ có thể xem qua nó.
===
Chuyển văn bản thành số bằng phương pháp Range.NumberFormat Đây là phương pháp đầu tiên và dễ nhất. Tôi thích phương pháp này hơn các phương pháp khác vì nó trực tiếp chuyển đổi phạm vi excel đã chọn thành định dạng số.
Vì vậy, nếu bạn có một dải ô cố định muốn chuyển đổi thành văn bản thì hãy sử dụng đoạn mã VBA này.
Sub ConvertTextToNumber() Range("A3:A8").NumberFormat = "General" Range("A3:A8").Value = Range("A3:A8").Value End Sub
Khi bạn chạy đoạn mã trên, nó sẽ chuyển văn bản của dải ô A3: A8 thành văn bản.
Mã này có thể trông thanh lịch hơn nếu chúng ta viết nó như thế này.
Sub ConvertTextToNumber() With Range("A3:A8") .NumberFormat = "General" .Value = .Value End With End Sub
Nó hoạt động như thế nào?
Nó khá đơn giản. Đầu tiên, chúng tôi thay đổi định dạng số của phạm vi thành Chung. Sau đó, chúng tôi đặt giá trị của phạm vi đó vào cùng một phạm vi bằng cách sử dụng VBA. Thao tác này sẽ loại bỏ hoàn toàn định dạng văn bản. Đơn giản phải không?
Thay đổi số lượng định dạng của một dải động
Trong mã trên, chúng tôi đã thay đổi văn bản thành số trong mã trên của một phạm vi cố định nhưng điều này sẽ không xảy ra trong hầu hết thời gian. Để chuyển đổi văn bản thành một số phạm vi động, chúng tôi có thể đánh giá ô được sử dụng gần đây nhất hoặc chọn phạm vi động.
Nó sẽ trông như thế này:
Sub ConvertTextToNumber() With Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row) .NumberFormat = "General" .Value = .Value End With
Ở đây, tôi biết rằng phạm vi bắt đầu từ A3. Nhưng tôi không biết nó có thể kết thúc ở đâu.
Lưu ý: Đoạn mã VBA này sẽ hoạt động trên sổ làm việc đang hoạt động và trang tính đang hoạt động. Nếu mã của bạn chuyển qua nhiều trang tính, tốt hơn là bạn nên đặt một đối tượng phạm vi của trang tính dự định. Như thế này
Sub ConvertTextToNumber() Set Rng = ThisWorkbook.Sheets("Sheet1").Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row) With Rng .NumberFormat = "General" .Value = .Value End With End Sub
Đoạn mã trên sẽ luôn thay đổi văn bản thành số sheet1 của sổ làm việc có chứa mã này.
Vòng lặp và CSng để thay đổi văn bản thành số Một phương pháp khác là lặp qua từng ô và thay đổi giá trị ô thành một số bằng cách sử dụng hàm CSng. Đây là mã.
Sub ConvertTextToNumberLoop() Set Rng = ThisWorkbook.Sheets("Sheet1").Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row) For Each cel In Rng.Cells cel.Value = CSng(cel.Value) Next cel End Sub
Vì vậy, các bạn, đây là cách bạn có thể thay đổi văn bản thành số trong Excel bằng VBA. Bạn có thể sử dụng các đoạn mã này để chuẩn bị trang tính của mình trước khi thực hiện bất kỳ thao tác số nào trên chúng. Tôi hy vọng tôi đã giải thích đủ. Bạn có thể tải xuống tệp làm việc tại đây.
Nếu bạn có bất kỳ nghi ngờ nào về chuyển đổi văn bản thành số này hoặc bất kỳ truy vấn nào khác liên quan đến excel / VBA, hãy hỏi trong phần nhận xét bên dưới.
Bài viết liên quan:
Bài viết phổ biến:
Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.