2.2.6. HÀM
TÌM KIẾM VÀ THAY THẾ MỘT CHUỖI (Searching for
Substrings,
Substituting One Substring for Another)
Tác giả: Bùi Nguyễn Triệu Tường (BNTT - GPE)
Tổng hợp: phamnhukhang (GPE)
Hàm FIND
và
Hàm SEARCH
Công dụng:
Dùng để tìm vị trí bắt đầu của một chuỗi con (substring) trong một
chuỗi
Công thức:
__
=FIND(find_text,
within_text [, start_num])
__ =SEARCH(find_text,
within_text [, start_num])
___find_text:
chuỗi văn bản cần tìm (chuỗi con)
___within_text:
chuỗi văn bản chứa chuỗi cần tìm (chuỗi mẹ)
___start_num:
vị trí bắt đầu tìm trong chuỗi
within_text (mặc định là 1)
Một số lưu ý:
- Kết quả của hai hàm này là một con số, chỉ vị trí bắt đầu (tính từ
start_num)
của find_text
trong within_text
- Dùng SEARCH() khi muốn tìm
một chuỗi bất kỳ. Ví dụ:
SEARCH(“e”, “Expenses”) sẽ cho kết
quả là 1.
- Dùng FIND() khi muốn tìm chính xác một chuỗi có phân biệt
chữ hoa, chữ thường. Ví dụ:
FIND(“e”, “Expenses”) sẽ cho kết
quả là 4.
- Nếu không tìm thấy find_text,
hàm sẽ báo lỗi #VALUE
- Có thể dùng những ký tự đại diện như *, ? trong
find_text
của hàm SEARCH()
- Với hàm SEARCH(), nếu muốn tìm chính ký tự * hoặc ? thì gõ
dấu ~ trước ký tự đó ( ~* hoặc là ~?)
Trích xuất họ và tên
(ví dụ dùng để trích cho tên tiếng Anh, bỏ qua tên đệm)
Đây là dạng bài toán đã được rất nhiều bạn hỏi trên
GPE.
Cách làm là dùng hàm FIND() để tìm những khoảng trắng phân
cách giữa họ và tên, sau đó dùng hàm LEFT() để tách phần tên,
và hàm RIGHT() để tách phần họ.
Để lấy phần tên (First Name), chúng ta dùng công thức sau (giả sử họ
tên nằm ở cell A2):
=LEFT(A2, FIND(" ", A2) - 1)
Nghĩa là dùng hàm FIND() để tìm vị trí của ký
tự trắng đầu tiên kể từ bên trái, ví dụ nó là vị trí thứ 5,
khi đó hàm LEFT() sẽ xác định được
cái tên này gồm có 4 chữ (= 5-1).
Để lấy phần họ (Last Name), chúng ta dùng công thức:
=RIGHT(A2, LEN(A2) - FIND(" ", A2))
Bạn tự dịch câu này nhé!
Hình sau đây là một số ví dụ của bài vừa rồi.

Công thức ở D2:
=RIGHT(A2, LEN(A2) - FIND(" ", A2)) & ", " & LEFT(A2,
FIND(" ", A2) - 1)
Trích xuất họ, tên đệm và tên
(ví dụ với tên tiếng Anh, phần tên đệm được viết tắt)
Đây cũng là dạng bài toán đã được rất nhiều bạn hỏi
trên GPE.
Cách làm giống như bài Trích xuất họ và tên ở trên, tuy nhiên có
khác một chút, để trích thêm phần tên đệm.
Giả sử Họ và Tên (full name) nằm ở cell A2, và đang có giá trị là
Karen E. Hammond
Đầu tiên, như bài trên, dùng công thức sau để tách phần Tên (first
name):
=LEFT(A2, FIND(" ", A2) - 1)
→
Karen
Công thức FIND(" ", A2) sẽ cho kết quả là 6, là vị
trí của khoảng trắng đầu tiên (sau chữ Karen).
Để tìm vị trí của khoảng trắng thứ hai, thì bạn phải gán vị trí bắt
đầu tìm (start_num) là 7, hoặc là bằng kết quả của FIND(" ", A2)
cộng thêm 1:
=FIND(" ", A2, FIND(" ",A2) + 1)
Rồi dùng kết quả của công thức này làm tham số cho
hàm RIGHT() để trích ra phần Họ (last name):
=RIGHT(A2, LEN(A2) - FIND(" ", A2, FIND(" ", A2) +1))
→
Hammond
Để trích phần tên đệm, dùng hàm FIND() để tìm vị trí
của dấu chấm (.) rồi đưa vào trong công thức của hàm MID() để tìm ký
tự đứng trước dấu chấm:
=MID(A2, FIND(".", A2) - 1, 1)
→
E
Hình sau đây là một minh họa cho phần vừa trình bày ở trên:

Xác định tên của cột
(Determining the Column Letter)
Trong Excel có hàm COLUMN(), cho ra kết quả là
số của cột (ví dụ, gõ hàm này trong cột B thì kết quả sẽ là 2).
Nhưng đôi khi bạn muốn kết quả là tên của cột chứ không muốn đó là
con số (B chứ không phải là 2), thì làm sao?
Đây là một vấn đề đòi hỏi sự khôn khéo một chút, vì tên cột trong
bảng tính chạy từ A đến Z, từ AA đến AZ... và cho tới tận cùng là
XFD (!)
Có một hàm giúp chúng ta tìm địa chỉ tuyệt đối của một cell, đó là
hàm CELL("address"), ví dụ $A$2, hoặc $B$10...
Trích:
Hàm CELL(info_type
[,reference])
Với info_type là một tham
số đã được định nghĩa (sẽ nói kỹ hơn trong những bài sau)
Và reference là cell mà bạn
chỉ định, nếu bỏ trống thì Excel sẽ lấy ngay cái cell có
chứa công thức CELL().
Trong bài này, để tìm địa chỉ tuyệt đối của một cell, chúng
ta sẽ dùng công thức CELL() với
info_type là "address"
|
Tinh ý một chút, ta thấy tên của cột chính là những
chữ cái nằm giữa hai dấu dollar ($) trong cái địa chỉ tuyệt đối này.
Bắt đầu làm nhé: dùng hàm MID() trích ra chữ cái từ vị trí thứ 2
trong địa chỉ tuyệt đối của cell:
=MID(CELL("Address"), 2, num_chars)
Cái khó là cái
num_chars
này đây, vì tên cột thì có thể là 1, 2, hoặc 3 ký tự
(ví dụ: A, AA hoặc AAA). Vận dụng hàm FIND thôi:
FIND("$", CELL("address"”,A2), 3) - 2
Giải thích chút nhé: Dùng hàm FIND(), tìm vị trí của
dấu $ trong cái địa chỉ tuyệt đối của cell, và bắt đầu tìm từ vị trí
thứ 3 trong cái địa chỉ này.
Tại sao phải trừ đi 2 ? Công thức trên sẽ chỉ ra vị trí (là một con
số) của dấu $ thứ hai trong địa chỉ tuyệt đối của cell, tức là cái
dấu $ phía sau tên cột,
phải trừ đi 2 tức là trừ bớt đi 2 cái $, lúc này kết quả sẽ chính là
số ký tự của tên cột (1 chữ, 2 chữ hoặc 3 chữ)
Bây giờ, công thức hoàn chỉnh sẽ như sau:
=MID(CELL("Address"), 2, FIND("$", CELL("address"),
3) - 2)
Công thức này áp dụng cho chính cell chứa công thức.
Nếu muốn tìm tên cột tại một cell nào đó, bạn chỉ việc thêm địa chỉ
(hoặc một cái gì đó tham chiếu đến địa chỉ này) của cell muốn tìm
vào phía sau cái "address"
Ví dụ, muốn tìm tên của cell AGH68, bạn gõ:
=MID(CELL("Address", AGH68), 2, FIND("$",
CELL("address", AGH68), 3) - 2)
→
AGH
Có nhiều chương trình có khả năng tìm kiếm một số đoạn văn và thay
thế nó bằng đoạn văn khác.
Excel cũng có khả năng làm chuyện đó bằng cách dùng hàm. Đó là hàm
REPLACE và hàm SUBSTITUTE.
Hàm REPLACE
Công dụng: Dùng để thay thế một phần của chuỗi bằng một chuỗi khác, dựa vào
số ký tự được chỉ định
Công thức:
=REPLACE(old_text,
start_num,
num_chars,
new_text)
___old_text:
chuỗi văn bản cần được xử lý
___start_num:
vị trí bắt đầu tìm cái sẽ thay thế, tính từ bên trái sang
___num_chars:
số ký tự của chuỗi cần được thay thế
___new_text:
chuỗi văn bản sẽ thay thế cho số ký tự đã chọn bởi
start_num
và num_chars
Cái khó của hàm này là xác định được bởi start_num
và num_chars.
Làm sao biết được bắt đầu từ đâu và thay thế bao nhiêu chữ? Tôi gợi
ý nhé:
- Bạn dùng hàm FIND() hoặc SEARCH() để xác định vị trí
bắt đầu (start_num)
- Dùng hàm LEN() để xác định số ký tự của chuỗi sẽ được thay
thế (num_chars)
Ví dụ: đế thay số 2007 bằng 2008 trong câu
Expense Budget for 2007
Dùng công thức như sau:
=REPLACE(A1, FIND("2007", A1), LEN("2007"), "2008")→
Expense Budget for 2008
Với A1 = Expense Budget for 2007
Hàm SUBSTITUTE
Công dụng: Dùng để thay thế một chuỗi này bằng một chuỗi khác. Hàm này cũng
tương tự hàm REPLACE(), nhưng dễ sử dụng hơn.
Công thức:
=SUBSTITUTE(text,
old_text, new_text
[,instance_num])
___text:
chuỗi văn bản gốc, cần được xử lý
___old_text:
chuỗi văn bản cần được thay thế
___new_text:
chuỗi văn bản sẽ thay thế vào
___instance_num:
số lần thay thế old_text
bằng
new_text, nếu bỏ qua thì tất cả
old_text
tìm được sẽ được thay thế bằng
new_text
Ví dụ:
đế thay số 2007 bằng 2008 trong câu
Expense Budget for 2007
Dùng công thức như sau:
=SUBSTITUTE("Expense Budget for 2007", "2007", "2008")
→
Expense Budget for 2008
Top
|