Jack tự hỏi làm thế nào anh ta có thể thực hiện tìm kiếm một từ hoặc cụm từ nhất định và trong một bước, đánh dấu tất cả các ô chứa nó để anh ta có thể cắt hoặc sao chép chúng và dán chúng vào nơi khác.

Chọn các ô chứa văn bản bạn muốn sử dụng khá dễ dàng; bạn có thể sử dụng tính năng Tìm và Thay thế tiêu chuẩn để thực hiện. Làm theo các bước sau:

  1. Nhấn Ctrl + F. Excel sẽ hiển thị tab Tìm của hộp thoại Tìm và Thay thế.

  2. Mở rộng hộp thoại bằng cách nhấp vào nút Tùy chọn. (Xem Hình 1.)

  3. Trong hộp Tìm gì, hãy nhập văn bản bạn muốn tìm.

  4. Sử dụng các điều khiển trong hộp thoại để giới hạn các kết quả phù hợp, như mong muốn.

  5. Nhấp vào Tìm tất cả. Hộp thoại được mở rộng để hiển thị tất cả các kết quả phù hợp đã được định vị.

  6. Nhấn Ctrl + A. Thao tác này sẽ chọn tất cả các ô đã được tìm thấy.

  7. Bấm Đóng để loại bỏ hộp thoại.

Đó là nó. Miễn là bạn không nhấp vào Khớp Toàn bộ Nội dung Ô ở bước 4, Excel sẽ chọn tất cả các ô có chứa văn bản bạn đã chỉ định trong bước 3. Tại thời điểm đó, bạn có thể áp dụng định dạng cho các ô, nếu muốn.

Tất nhiên, bạn có thể sử dụng định dạng có điều kiện để định dạng động các ô chứa văn bản bạn muốn đánh dấu. Tất cả những gì bạn cần làm là thiết lập một điều kiện sử dụng công thức kiểm tra sự hiện diện của văn bản bạn muốn. Tất nhiên, thao tác này sẽ không chọn tất cả các ô có chứa văn bản, nhưng nó sẽ đánh dấu chúng để bạn có thể chọn chúng ở đâu.

Bạn cũng có thể sử dụng macro để chọn tất cả các ô chứa văn bản mong muốn. Sau đây là một cái khá đơn giản để hoàn thành nhiệm vụ:

Sub selCellbasedonValue()

Dim c As Object     Dim u As Range     Dim v As Range     Dim sInpt As String

Set u = ActiveSheet.UsedRange

sInpt = InputBox("Enter the search text")



If sInpt > "" Then         For Each c In u             If Instr(LCase(sInpt),LCase(c.Value)) > 0 Then                 If v Is Nothing Then                     Set v = Range(c.Address)

Else                     Set v = Union(v, Range(c.Address))

End If             End If         Next         v.Select         Set v = Nothing     End If

Set u = Nothing End Sub

Tuy nhiên, có một vấn đề với việc chọn các ô mà bạn cần nhận ra — nếu các ô không liền nhau, bạn không thể cắt hoặc sao chép các ô. Nếu cố gắng, bạn sẽ nhận được thông báo lỗi cho biết rằng lệnh không thể được sử dụng trên nhiều lựa chọn. Cách dễ nhất để sao chép nội dung ô sang một vị trí khác là sử dụng lại macro:

Sub CopyFinds()

Dim sSrch As String     Dim sFirst As String     Dim rPaste As Range     Dim i As Integer     Dim iLeftC As Integer     Dim lTopR As Long     Dim c As Object

If Selection.Cells.Count = 1 Then         MsgBox "Select the range to be searched."

Exit Sub     End If

'Specify search string     sSrch = InputBox(Prompt:="Enter the search text")



'   Set the paste address     On Error Resume Next     Set rPaste = Application.InputBox(Prompt:="Enter the upper-left " & _       "cell address for the paste range", Type:=8)

On Error GoTo 0

'   Exit if canceled     If TypeName(rPaste) <> "Range" Then Exit Sub

'   Upper left cell to be used     Set rPaste = rPaste.Range("A1")



'Set where paste will start and headings     Application.ScreenUpdating = False     lTopR = rPaste.Row     iLeftC = rPaste.Column     Cells(lTopR, iLeftC) = "Address"

Cells(lTopR, iLeftC + 1) = "Cell Value"

lTopR = lTopR + 1          'Start copying cell values     With Selection         Set c = .Find(What:=sSrch, LookAt:=xlPart, MatchCase:=True)

If Not c Is Nothing Then             sFirst = c.Address             Do                 Cells(lTopR, iLeftC) = c.Address                 Cells(lTopR, iLeftC + 1) = c.Value                 Set c = .FindNext(c)

lTopR = lTopR + 1             Loop While Not c Is Nothing And c.Address <> sFirst         End If     End With          Application.ScreenUpdating = True     Cells(rPaste.Row, rPaste.Column).Select End Sub

Khi bạn chọn một dải ô và chạy macro này, bạn sẽ được yêu cầu chỉ định những gì bạn đang tìm kiếm (trường hợp quan trọng) và địa chỉ nơi bạn muốn sao chép nó. Sau đó, macro sẽ tìm tất cả các ô có chứa giá trị đó và sao chép cả địa chỉ của chúng và giá trị ô vào địa chỉ bắt đầu mà bạn đã chỉ định. Macro không thực hiện nhiều kiểm tra lỗi; nó sẽ ghi đè thông tin nếu bạn chỉ định một địa chỉ đích đã có thông tin trong đó. Ngoài ra, nếu bạn chỉ định địa chỉ đích nằm trong phạm vi bạn đang tìm kiếm, macro có thể chạy vô hạn. Bạn chắc chắn nên chỉ định một mục tiêu nằm ngoài phạm vi đang được tìm kiếm.

_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 (8963) á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: