Garrett hỏi liệu có cách nào để nhanh chóng chuyển đổi dữ liệu văn bản sang dữ liệu số. Anh ấy đang nhập một tệp văn bản sử dụng dấu cách ở hàng nghìn (1 256) thay vì dấu phẩy (1,256).

Có một số cách để tiếp cận vấn đề này. Đầu tiên là hiểu ngọn nguồn của vấn đề. Tệp văn bản có thể được tạo trên một hệ thống tuân theo tiêu chuẩn số liệu. Một số quốc gia, theo tiêu chuẩn số liệu, sử dụng khoảng trắng cho dấu phân cách hàng nghìn thay vì dấu phẩy. Do đó, bạn có thể nhập tệp đúng cách vào Excel nếu bạn thay đổi cài đặt khu vực của mình trong Windows trước khi bắt đầu Excel và thực hiện nhập. Bạn có thể thay đổi cài đặt khu vực bằng cách sử dụng Bảng điều khiển.

Nếu bạn không muốn thay đổi cài đặt khu vực trên hệ thống của mình, bạn có thể thực hiện các cách tiếp cận khác. Sau khi Excel nhập thông tin, bạn có thể chọn phạm vi ô chứa số và chỉ cần thực hiện tìm kiếm và thay thế. Bạn đang tìm kiếm một không gian duy nhất và thay thế nó bằng không gian. Điều này sẽ loại bỏ hoàn toàn khoảng trống và Excel sau đó sẽ coi nội dung của ô là một số.

Bạn cũng có thể sử dụng một công thức, nếu muốn, để sửa đổi dữ liệu đã nhập. Ví dụ: nếu số đã nhập (chứa khoảng trắng) nằm trong ô A3, bạn có thể sử dụng công thức này để loại bỏ khoảng trắng:

=1*SUBSTITUTE(A3," ","")

Lưu ý rằng có khoảng cách giữa tập hợp các dấu ngoặc kép đầu tiên và không có khoảng cách nào giữa tập hợp các dấu ngoặc kép thứ hai.

Nếu bạn có khá nhiều dữ liệu cần chuyển đổi hoặc nếu bạn có văn bản xen kẽ với các ô “chỉ số”, thì bạn có thể quyết định sử dụng macro để thực hiện chuyển đổi. Macro sau hoạt động trên một lựa chọn bạn thực hiện trước khi gọi nó. Nó cũng kiểm tra để đảm bảo rằng ô — sau khi loại bỏ khoảng trắng — có chứa một giá trị số. Nếu không, thì không có chuyển đổi nào được thực hiện.

Sub ClearSpacesIfNumeric()

Dim c As Range 'Cell under examination     Dim tmpText As String 'Cell contents without spaces     Dim i As Integer 'Simple counter

For Each c In Selection         tmpText = "" 'Initialize

'Check each character to see if it's a space         'If it isn't, add it to tmpText         For i = 1 To Len(c.Text)

If Mid(c.Text, i, 1) <> " " Then                 tmpText = tmpText & Mid(c.Text, i, 1)

End If         Next i

'tmpText is now the cell contents without spaces         'If tmpText is a number, assign its value to         'the current cell         If IsNumeric(tmpText) Then             c.Value = tmpText         End If     Next c End Sub

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (12058) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: