Mel thường muốn gắn trước một ký tự vào đầu bất kỳ ký tự nào trong một dãy ô. Ví dụ: anh ta có thể muốn thêm một chữ cái vào đầu một số văn bản (vì vậy “123” trở thành “A123” và “xyz” trở thành “Axyz”) hoặc anh ta có thể muốn thêm dấu nháy đơn (để “123” trở thành “‘ 123 “và” xyz “

trở thành” ‘xyz “). Mel tự hỏi nếu điều này có thể được thực hiện bằng cách sử dụng Tìm và Thay thế.

Câu trả lời ngắn gọn là nó không thể. Khả năng Tìm và Thay thế trong Excel bị hạn chế hơn so với trong Word, nơi bạn có khả năng tìm kiếm các ký tự đại diện và sử dụng văn bản “Tìm gì” trong nội dung được thay thế. (Đây chỉ là hai ví dụ về các khả năng bị thiếu trong Tìm và Thay thế của Excel.)

Sau đó, một câu trả lời tiềm năng là sao chép dữ liệu của bạn sang Word, sử dụng Tìm và Thay thế để thực hiện các thay đổi, sau đó sao chép lại dữ liệu. Tất nhiên, bạn có nguy cơ mất định dạng trong chuyến đi khứ hồi, mất một số độ chính xác và chuyển đổi tất cả kết quả công thức của bạn thành giá trị tĩnh. Đối với nhiều người dùng, đây là những rủi ro không thể chấp nhận được.

Một tùy chọn khác là sử dụng khả năng nối của Excel. Ví dụ: nếu các giá trị bạn muốn xếp trước nằm trong cột A (bắt đầu bằng A1), thì bạn sẽ sử dụng công thức như đây là cột B:

="A" & A1

Kết quả sẽ chờ trước ký tự A thành bất kỳ ký tự nào trong A1. Điều này hoạt động để chờ xử lý trước bất kỳ thứ gì ngoại trừ dấu nháy đơn. Cố gắng đặt trước một dấu nháy đơn kết thúc bằng ‘123 hoặc’ xyz, nhưng dấu nháy đơn có thể nhìn thấy trong ô. Kết quả không giống với Excel, khi nhập dấu nháy đơn theo sau là 123 hoặc dấu nháy đơn theo sau là xyz. (Trong trường hợp nhập, dấu nháy đơn cho biết nội dung ô phải được coi là văn bản và dấu nháy đơn chỉ hiển thị trong thanh Công thức, không hiển thị trong chính ô.)

Nếu bạn thực sự muốn thay đổi các giá trị trong một loạt ô (mà bạn muốn sử dụng Tìm và Thay thế sẽ đề xuất), thì điều duy nhất bạn có thể làm là sử dụng macro để thực hiện các thay đổi của mình. Nếu bạn chỉ muốn xếp trước các ô bắt đầu bằng giá trị đã đặt (chẳng hạn như 123) với một chữ cái (chẳng hạn như A), thì một macro đơn giản là đủ.

Sub Prepend1()

ToFind = "123"

ToFindLength=Len(ToFind)

ToPrepend = "A"



For Each rcell In Selection         If LCase(Mid(rcell.Value, 1, ToFindLength)) =  LCase(ToFind) Then             rcell.Value = ToPrepend & rcell.Value         End If     Next End Sub

Lưu ý rằng biến ToFind chứa văn bản bắt đầu mà bạn muốn thêm vào trước và biến ToPrepend chứa những gì bạn muốn xuất hiện trước chuỗi đó. Trong trường hợp này, khi bạn chọn một dải ô và chạy macro, bất kỳ thứ gì bắt đầu bằng 123 (chẳng hạn như “123” hoặc “12345”

hoặc “123D27X”) sẽ có thêm chữ A vào phía trước của tế bào.

Tuy nhiên, macro như vậy không giúp ích được gì khi bạn muốn thêm ký tự vào đầu mỗi ô trong phạm vi, không chỉ những ô bắt đầu bằng 123.

Trong trường hợp đó, bạn cần một cách tiếp cận khác.

Sub Prepend2()

Dim rng As Range     Dim c As Range     Dim ToPrepend As String

ToPrepend = "A"



' Process only text and number constants     Set rng = Selection.SpecialCells(xlCellTypeConstants, 3)



For Each c In rng         c.Value = ToPrepend & c.Value     Next c End Sub

Macro này lấy một tập hợp con của bất kỳ ô nào bạn đã chọn trước khi chạy nó (chỉ những ô chứa giá trị văn bản và số), sau đó thêm nội dung của biến ToPrepend vào đầu ô. Nếu bạn muốn thay đổi những gì đang chờ xử lý trước, chỉ cần thay đổi giá trị của biến. (Cần lưu ý rằng nếu bạn thay đổi ToPrepend thành dấu nháy đơn, thì các ô mà dấu nháy đơn được chờ trước sẽ hoạt động chính xác như thể bạn đã nhập và dấu nháy đơn theo sau là giá trị ô.)

_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 (3883) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: