Friday, May 31, 2013

Hàm tìm kiếm và tham chiếu

HÀM TÌM KIẾM VÀ THAM CHIẾU
Bao gồm các hàm tìm kiếm và tham chiếu rất hữu ích khi bạn làm việc với CSDL lớn trong EXCEL như kế toán, tính lương, thuế...
=ADDRESS(row_num, column_num [, abs_num] [, a1] [, sheet_text]) Dùng để tạo địa chỉ dạng chuỗi ký tự, theo chỉ số dòng và chỉ số cột được cung cấp.
row_num: Số thứ tự dòng của địa chỉ
column_num: Số thứ tự cột của địa chỉ
abs_num: Kiểu địa chỉ (tuyệt đối hay tương đối) - mặc định là tuyệt đối
a1: Dạng địa chỉ (=TRUE: dạng A1; =FALSE: dạng R1C1) - mặc định là TRUE
sheet_text: Tên của sheet chứa địa chỉ - mặc định là không có
=AREAS(reference) Trả về số vùng tham chiếu trong một tham chiếu. Mỗi vùng tham chiếu có thể là một ô rời rạc hoặc là một dãy ô liên tục trong bảng tính.
reference: Là một hoặc nhiều vùng tham chiếu mà bạn cần đếm. Nếu muốn đưa nhiều vùng rời rạc nhau vào công thức thì bạn phân cách chúng bằng dấu phẩy, nếu không ngăn bằng dấu phẩy, Excel sẽ không đếm (xem ví dụ 3 dưới đây)
=CHOOSE Trả về giá trị trong mảng giá trị tại vị trí được chỉ định.
=COLUMN(reference) Trả về số thứ tự cột của ô đầu tiên ở góc trên bên trái của vùng tham chiếu.
reference: Là ô hoặc một vùng nhiều ô. Nếu reference bỏ trống thì COLUMN() trả về số thứ tự cột của ô chứa công thức.
=COLUMNS(array) Trả về số cột của vùng tham chiếu.
array: Là ô hoặc một vùng nhiều ô, mảng tham chiếu
=HYPERLINK(link_location, friendly_name) Tạo một siêu liên kết, một liên kết để mở một tài liệu...
link_location: Đường dẫn đến tài liệu cần mở, nhập ở dạng chuỗi ký tự. Link_location có thể chỉ đến một ô đặc biệt, tên của một dãy ô trong một trang bảng tính hoặc một bảng tính, hoặc chỉ đến một đánh dấu (bookmark) trong Microsoft Excel. Link_location cũng có thể chỉ đến một tập tin lưu trên ổ cứng, hoặc một đường dẫn truy xuất nội bộ trên một máy chủ hoặc một đường dẫn tài nguyên URL trên mạng intranet, internet.
- Link_location có thể là một chuỗi ký tự đặt trong dấu nháy kép, hoặc một ô nào đó chứa đường dẫn dưới dạng chuỗi ký tự.
- Nếu link_location liên kết đến một tài nguyên không tồn tại, sẽ xuất hiện lỗi khi bạn kích vào ô chứa hàm HYPERLINK() này.
firendly_name: Là nội dung hiển thị trong ô chứa hàm HYPERLINK(), có thể là một số, hoặc chuỗi ký tự. Nội dung này sẽ hiển thị bằng màu xanh và có gạch chân, nếu không có firendly_name thì chính link_location sẽ hiển thị.
- Firendly_name có thể là một giá trị, một chuỗi ký tự, một tên mảng, hoặc một ô liên kết đến một giá trị hoặc một chuỗi văn bản.
- Nếu firendly_name liên kết đến một giá trị bị lỗi, thì chính tên cái lỗi đó sẽ được hiển thị để thay thế cho nội dung bạn cần.
Ví dụ:
=HYPERLINK("http://example.microsoft.com/report/bu dget report.xls", "Click for report")
sẽ hiển thị: Click for report, và khi bạn click vào ô này, Excel sẽ mở bảng tính budget report.xls của trang web http://example.microsoft.com/report
=HYPERLINK("F:\GPE\book2.xls",F10)
sẽ hiển thị nội dung của ô F10 và khi bạn click vào ô này, Excel sẽ mở bảng tính book2.xls ở thư mục GPE của ổ F
=HYPERLINK("F:\GPE\book2.xls",F10)
sẽ hiển thị nội dung của ô F10 và khi bạn click vào ô này, Excel sẽ mở bảng tính book2.xls ở thư mục GPE của ổ F
=MATCH Trả về vị trí của một giá trị trong bảng dữ liệu
=INDEX Trả về một giá trị trong bảng dữ liệu tương ứng với chỉ mục của nó.

Tìm kiếm trong nhiều cột
Đôi khi, các dữ liệu dùng để tìm kiếm không nằm ở một cột mà trong nhiều cột.
Ví dụ, bạn có một danh sách đã được tách sẵn họ và tên riêng ra hai cột.
Người ta yêu cầu dựa vào họ và tên để xác định chức vụ.
Chúng ta có thể dùng một cột phụ để nối họ và tên lại rồi tìm theo cột phụ... Nhưng có lẽ không cần, vì tôi sẽ dùng hàm INDEX() MATCH() với công thức mảng.

Hàm MATCH() có một cú pháp ít người biết đến, đó là:
=MATCH(value1 & value2, array1 & array2, match_type)
value1 & value2 là các dữ liệu để tìm (ví dụ họ và tên)
array1 & array2 là các cột (hoặc hàng) chứa các dữ liệu dùng để tìm kiếm đó
Và đây là cú pháp dùng INDEX() ghép với MATCH() trong công thức mảng:
{=INDEX(reference, MATCH(value1 & value2, array1 & array2, match_type))}
=INDIRECT(ref_text [, a1]) 
ref_text là tham chiếu tới một ô (có thể là dạng A1 hoặc dạng R1C1), là tên định nghĩa của một tham chiếu, hoặc là một tham chiếu dạng chuỗi.
-Nếu ref_text không hợp lệ, INDIRECT() sẽ báo lỗi #REF!
-Nếu ref_text chứa tham chiếu đến một bảng tính khác thì bảng tính này phải đang mở, nếu không, INDIRECT() cũng báo lỗi #REF!
a1 là giá trị logic xác định dạng tham chiếu bên trong ref_text.
a1 = TRUE (hoặc là 1, hoặc không nhập) là kiểu tham chiếu A1
a1 = FALSE (hoặc là 2) là kiểu tham chiếu R1C1
Trả về giá trị của một tham chiếu từ chuỗi ký tự. Tham chiếu được trả về ngay tức thời để hiển thị nội dung của chúng. Cũng có thể dùng hàm INDIRECT khi muốn thay đổi tham chiếu tới một ô bên trong một công thức mà không cần thay đổi công thức đó.
=LOOKUP Dò tìm một giá trị 
Hàm LOOKUP
Dùng để dò tìm một giá trị từ một dòng hoặc một cột trong một dãy ô hoặc một mảng giá trị.
Hàm LOOKUP() có hai dạng: Vec-tơ (vector form) và Mảng (array form)
* Dạng Vec-tơ: LOOKUP() tìm kiếm trên một dòng hoặc một cột, nếu tìm thấy sẽ trả về giá trị của ô cùng vị trí trên dòng (hoặc cột) được chỉ định.
* Dạng Mảng: LOOKUP() tìm kiếm trên dòng (hoặc cột) đầu tiên của một mảng giá trị, nếu tìm thấy sẽ trả về giá trị của ô cùng vị trí trên dòng (hoặc cột) cuối cùng trong mảng đó.
Vector form (dạng vec-tơ)

Cú pháp: LOOKUP(lookup_value, lookup_vector, result_vector)
lookup_value: Là giá trị LOOKUP() sẽ tìm kiếm trong lookup_vector. Nó có thể là một số, một ký tự, một giá trị logic, một tên đã được định nghĩa của một vùng ô hoặc một tham chiếu đến một giá trị.
lookup_vector: Là một vùng mà chỉ gồm một dòng (hoặc một cột) có chứa lookup_value. Những giá trị chứa trong vùng này có thể là một số, một ký tự hoặc một giá trị logic.
- lookup_vector phải được sắp xếp theo thứ tự tăng dần, nếu không, LOOKUP() có thể cho kết quả không chính xác.
- Nếu không tìm thấy lookup_value trong lookup_vector thì LOOKUP() sẽ lấy giá trị lớn nhất mà nhỏ hơn hoặc bằng lookup_value.
- Nếu lookup_value nhỏ hơn giá trị nhỏ nhất trong lookup_vector thì LOOKUP() sẽ báo lỗi #NA!
result_vector: Là một vùng mà chỉ gồm một dòng (hoặc một cột) chứa giá trị trả về. Kích thước của result_vector bắt buộc phải bằng kích thước của lookup_vector.
^^ Array form (dạng mảng)
Cú pháp: LOOKUP(lookup_value, array)
lookup_value: Là giá trị LOOKUP() sẽ tìm kiếm trong array. Nó có thể là một số, một ký tự, một giá trị logic, một tên đã được định nghĩa của một vùng ô hoặc một tham chiếu đến một giá trị.
- Nếu không tìm thấy lookup_value trong array thì LOOKUP() sẽ lấy giá trị lớn nhất mà nhỏ hơn hoặc bằng lookup_value.
- Nếu lookup_value nhỏ hơn giá trị nhỏ nhất trong cột hoặc hàng đầu tiên trong array thì LOOKUP() sẽ báo lỗi #NA!
array: Là một vùng chứa lookup_value, có thế là số, ký tự, hoặc giá trị logic.
Dạng mảng của LOOKUP() gần tương đương như hàm VLOOKUP() hoặc HLOOKUP().
Khác biệt ở chỗ VLOOKUP() và HLOOKUP() tìm kiếm trên cột (hoặc dòng) đầu tiên, còn LOOKUP() tìm kiếm trên cột hoặc trên dòng tùy thuộc vào dạng mảng được khai báo:
- Nếu array là mảng có số cột nhiều hơn số dòng thì LOOKUP() sẽ tìm trên dòng đầu tiên.
- Nếu array là mảng có số dòng nhiều hơn số cột thì LOOKUP() sẽ tìm trên cột đầu tiên.
- Trường hợp array là mảng có số dòng bằng số cột thì LOOKUP() sẽ tìm trên cột đầu tiên.
- VLOOKUP() và HLOOKUP() lấy kết quả trên cột (hoặc) dòng được chỉ định, còn LOOKUP() luôn luôn lấy kết quả trên dòng (hoặc cột) cuối cùng.
- Các giá trị trên dòng (hoặc cột) đầu tiên của array phải được sắp xếp theo thứ tự tăng dần, nếu không, LOOKUP() có thể cho kết quả không chính xác.

 Hàm GETPIVOTDATA()
Trả về dữ liệu được lưu giữ trong báo cáo PivotTable. Có thể dùng GETPIVOTDATA() để lấy dữ liệu tổng kết từ một báo cáo PivotTable, với điều kiện là phải thấy được dữ liệu tổng kết từ trong báo cáo đó.
Để nhanh chóng nhập công thức GETPIVOTDATA(), bạn có thể gõ dấu = vào ô muốn nhận dữ liệu tổng kết, rồi nhấp vào ô chứa số liệu tổng kết của báo cáo PivotTable.
Cú pháp: = GETPIVOTDATA(data_field, pivot_table, field1, item1, field2, item2,...)
data_field : Tên trường chứa dữ liệu tổng kết của báo cáo PivotTable. Tên này phải được đặt trong một cặp dấu nháy kép.
pivot_data : Tham chiếu đến một ô, dãy ô, hoặc tên dãy ô bên trong một báo cáo PivotTable. Thông tin này được dùng để xác định báo cáo PivotTable nào chứa dữ liệu trả về.
field1, item1, field2, item2,... : Có thể có từ 1 đến 126 (với Excel 2003 trở về trước thì con số này chỉ là 14) cặp tên field và item mô tả dữ liệu muốn trả về. Những cặp này có thể thuộc bất cứ loại nào. Nếu tên field và item không là ngày tháng hoặc số liệu, cần phải đặt chúng trong cặp dấu nháy kép. Đối với loại báo cáo OLAP PivotTable, items có thể bao gồm đầy đủ đường dẫn lẫn tên của item. Một cặp field và item của OLAP PivotTable có thể như sau:
"[Product]","[Product].[All Products].[Foods].[Baked Goods]"
Lưu ý:
* Các field hay item tính toán và các phép tính tự tạo có thể được đặt trong phép tính GETPIVOTDATA.
* Nếu pivot_table là một dãy có chứa nhiều hơn 1 báo cáo PivotTable, dữ liệu trả về sẽ là từ báo cáo được tạo ra sau cùng.
* Nếu đối số field và các đối số của item mô tả chỉ mỗi một ô, giá trị của ô đó sẽ được trả về mà không cần biết giá trị đó là chuỗi, là số, là lỗi, hay là một thứ gì đó...
* Nếu item chứa ngày tháng, giá trị phải được biểu diễn dưới dạng một chuỗi số hoặc được thiết lập bằng cách dùng hàm DATE() để giá trị đó sẽ không biến đối khi bảng tính được mở ở một máy khác, có hệ thống định dạng ngày tháng khác với nơi tạo ra nó. Ví dụ, một item tham chiếu tới ngày 5 tháng 3 năm 1999 có thể được nhập là 36224 hay DATE(1999, 3, 5). Thời gian có thể được nhập như một giá trị thập phân hoặc bằng cách dùng hàm TIME().
* Nếu pivot_table không phải là một dãy có chứa báo cáo PivotTable, GETPIVOTDATA() sẽ trả về lỗi #REF!
* Nếu các đối số miêu tả một field không thể thấy được, hoặc nếu chúng gồm một trường không hiển thị, GETPIVOTDATA() cũng sẽ trả về lỗi #REF!

 Hàm DGET()

Trích một giá trị từ một cột của một danh sách hay cơ sở dữ liệu, khớp với điều kiện được chỉ định.
Cú pháp: = DGET(database, field, criteria)
=OFFSET(reference, rows, cols [, height] [, width]) Trả về một vùng tham chiếu từ một vùng xuất phát.
Đây là một trong những hàm rất hay của Excel, và được ứng dụng rất nhiều.
Nó dùng để tham chiếu đến một vùng nào đó, bắt đầu từ một ô, hoặc một dãy ô, với một khoảng cách được chỉ định.
reference: Là vùng mà bạn muốn làm điểm xuất phát để tham chiếu đến vùng khác. Reference phải chỉ đến một ô hoặc một dãy ô liên tục, nếu không, hàm sẽ báo lỗi #VALUE!
rows: Số dòng dời lên (hoặc xuống) tính từ reference, nhập số dương nếu muốn dời xuống, hoặc số âm nếu muốn dời lên.
cols: Số cột dời sang phải trái (hoặc phải) tính từ reference, nhập số dương nếu muốn dời sang phải, hoặc số âm nếu muốn dời sang trái.
height: Là số dòng (độ cao) của vùng tham chiếu cần trả về.
width: Là số cột (độ rộng) của vùng tham chiếu cần trả về.
Ghi chú:
* Nếu số dòng (rows) hoặc cột (cols) vượt ra ngoài phạm vi bảng tính, hàm sẽ báo lỗi #REF!
* Độ cao (height) và độ rộng (width) nếu không nhập, thì xem như nó bằng với độ cao và độ rộng của vùng xuất phát (reference)
=ROW(reference) Trả về số thứ tự dòng của ô đầu tiên trong dãy ô. Trả về số thứ tự dòng của ô đầu tiên ở góc trên bên trái của vùng tham chiếu.
reference: Là ô hoặc một vùng nhiều ô. Nếu reference bỏ trống thì ROW() trả về số thứ tự cột của ô chứa công thức.
=ROWS(array) Trả về số dòng của vùng tham chiếu.
array: Là ô hoặc một vùng nhiều ô, mảng tham chiếu
=TRANSPOSE(array) Chuyển một vùng dữ liệu ngang thành dọc và ngược lại.
Hàm TRANSPOSE() luôn luôn được nhập ở dạng công thức mảng (nhấn Ctrl-Shift-Enter sau khi nhập)
array: Là mảng dữ liệu cần hoán chuyển
Nếu số cột trong vùng nhập công thức nhiều hơn số hàng của array, hoặc số hàng trong vùng nhập công thức nhiều hơn số cột của array, hàm sẽ báo lỗi #NA tại những ô bị dư ra.
=VLOOKUP(giá trị tìm, vùng cần tìm, cột cần lấy, cách tìm) Dò tìm một giá trị trên cột đầu tiên và trả về ...
Hàm tìm kiếm và tham chiếu theo cột.
Vùng cần tìm: thường để ở chế độ giá trị tuyệt đối: $
Cột cần lấy: ở vùng cần tìm.
Cách tìm: Tìm theo 2 giá trị:
0: Cột bên trái của vùng cần tìm không sắp xếp (ngầm định)
1: Sắp xếp tăng dần.
=HLOOKUP(giá trị tìm, vùng cần tìm, hàng cần lấy, cách tìm) Dò tìm một giá trị trên hàng đầu tiên và trả về ... - giống hàm VLOOKUP

1 comment:

  1. Bài viết rất hữu ích về hàm Vlookup và Hlookup nhưng giá như có thêm Ví dụ minh họa nữa thì tuyệt quá!
    Học Excel cơ bản chắc chắn không thể bỏ qua những hàm này.

    ReplyDelete