Đến nội dung

Hàm vùng và tra cứu ​

Nhóm này gồm 14 hàm làm việc với vùng dữ liệu: dò tìm nâng cao (một chiều, hai chiều, nhiều kết quả, tìm trên mọi trang tính), lọc và lấy giá trị duy nhất từ mảng, tính tổng/đếm theo màu nền hoặc theo dòng đang hiển thị, và tự động ẩn dòng theo điều kiện.

Các ví dụ dưới đây dùng dấu chấm phẩy ; để ngăn cách tham số (Excel chạy trên Regional format Việt Nam). Nếu máy bạn dùng định dạng English (US), hãy gõ dấu phẩy , thay cho ;.

Bảng tra nhanh:

HàmCông dụng
dvdXlookupDò tìm mở rộng, có xử lý lỗi và chế độ tìm xấp xỉ.
dvdELookupLấy kết quả của lần khớp cuối cùng trong vùng.
dvdMCLookupTrả về tất cả các dòng khớp, gồm nhiều cột, ra một vùng đích.
dvdMVLookupTrả về tất cả giá trị khớp từ một cột lệch so với cột dò.
dvdTableLookupDò tìm hai chiều theo tiêu đề hàng và tiêu đề cột.
dvdLookupAllSheetsDò tìm một giá trị trên tất cả các trang tính của workbook.
dvdUniqueTrả về mảng các giá trị duy nhất của một vùng.
dvdUniqueVTrả về giá trị duy nhất, ghi phần còn lại ra vùng đích.
dvdUnique2DArrayGiữ lại các dòng duy nhất của mảng theo một cột khóa.
dvdFilter2DArrayLọc mảng hai chiều theo điều kiện của một cột.
dvdSumVisibleCộng các ô đang hiển thị, bỏ qua dòng và cột bị ẩn.
dvdSumIfColorCộng các ô có màu nền giống ô mẫu.
dvdCountIfColorĐếm các ô có màu nền giống ô mẫu.
dvdAutoHideTự động ẩn dòng không thỏa điều kiện và đánh lại số thứ tự.

dvdXlookup ​

Dò tìm một giá trị trong vùng dò và trả về giá trị tương ứng ở vùng kết quả, có tùy chọn giá trị thay thế khi không tìm thấy hoặc khi lỗi.

Cú pháp:

=dvdXlookup(LookupValue; LookupArray; ReturnArray; [IfNotFound]; [IfError]; [MatchMode])
Tham sốBắt buộcMô tả
LookupValueCóGiá trị cần tìm kiếm trong LookupArray.
LookupArrayCóPhạm vi dữ liệu nơi thực hiện tìm kiếm.
ReturnArrayCóPhạm vi trả kết quả.
IfNotFoundKhôngGiá trị trả về nếu không tìm thấy; bỏ trống thì trả #N/A.
IfErrorKhôngGiá trị trả về nếu có lỗi; bỏ trống thì trả #N/A.
MatchModeKhông0 = chính xác (mặc định), -1 hoặc 1 = xấp xỉ, tương tự XLOOKUP.

Ví dụ:

=dvdXlookup(A6; 'Đơn giá'!$A$5:$A$500; 'Đơn giá'!$E$5:$E$500; "Chưa có đơn giá"; "Lỗi dữ liệu"; 0)
// → 1.850.000 (đơn giá của mã công tác trong ô A6)

=dvdXlookup(D6; $H$5:$H$20; $I$5:$I$20; ""; ""; 1)
// → hệ số của khoảng cự ly vận chuyển gần nhất không vượt quá D6

Lưu ý

  • Hàm luôn dò khớp chính xác trước; chỉ khi không tìm thấy và MatchMode khác 0 mới chuyển sang xấp xỉ.
  • Chế độ xấp xỉ chỉ áp dụng cho dữ liệu số: -1 lấy giá trị nhỏ nhất lớn hơn hoặc bằng giá trị tìm, 1 lấy giá trị lớn nhất nhỏ hơn hoặc bằng giá trị tìm.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô D12 (đơn giá của mã ở A12) rồi gõ =dvdx — danh sách gợi ý hiện DVDXLOOKUP kèm mô tả hàm (1). Nhấn Tab để chọn.

Bước 1

Bước 2. Chọn ô mã A12, cột mã của bảng giá (1) và cột đơn giá (2) (nhấn F4 để thêm $), rồi gõ "Chưa có giá" cho mã không tìm thấy. Khung gợi ý (3) in đậm đối số đang nhập.

Bước 2

Bước 3. Muốn xem mô tả từng đối số, nhấn Ctrl+A ngay sau tên hàm: hộp Đối số Hàm hiện giá trị trả về khi không tìm thấy (1) và kết quả tính thử (2). Ô thứ sáu MatchMode (cuộn xuống) nhận 1/-1 để dò xấp xỉ dữ liệu số. Bấm OK (3).

Bước 3

Bước 4. Nhấn Enter rồi chép công thức xuống D13: mã VL.004 trả đơn giá 15.800 (1); mã VL.009 chưa có trong bảng giá nên ô hiện "Chưa có giá" thay vì #N/A (2).

Bước 4

dvdELookup ​

Dò từ dưới lên và trả về kết quả của lần khớp cuối cùng — dùng khi một mã công tác xuất hiện nhiều lần và bạn cần bản ghi mới nhất.

Cú pháp:

=dvdELookup(LookupValue; LookupRange; ResultRange)
Tham sốBắt buộcMô tả
LookupValueCóGiá trị cần tìm kiếm.
LookupRangeCóPhạm vi chứa giá trị cần tìm.
ResultRangeCóPhạm vi chứa kết quả.

Ví dụ:

=dvdELookup(A6; $B$5:$B$300; $F$5:$F$300)
// → khối lượng của lần nghiệm thu gần nhất cho mã công tác A6

Lưu ý

  • Không tìm thấy thì hàm trả về chuỗi Không tìm thấy kết quả.
  • Hai vùng nên có cùng số dòng vì kết quả được lấy theo vị trí tương ứng.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô D12 rồi gõ =dvde, chọn DVDELOOKUP trong danh sách gợi ý (1) và nhấn Tab.

Bước 1

Bước 2. Chọn ô mã B12, cột mã của nhật ký (1) rồi cột đơn giá (2) — hai vùng phải cùng số dòng vì kết quả lấy theo vị trí. Khung gợi ý (3) mô tả đối số đang nhập.

Bước 2

Bước 3. Nhấn Enter rồi chép xuống D13. Hàm dò từ dưới lên nên lấy giá 15.800 (1) của lần cập nhật cuối 03/09/2026 (2), không phải 15.200 ở dòng đầu. Mã không có trong nhật ký thì hàm trả "Không tìm thấy kết quả".

Bước 3

dvdMCLookup ​

Trả về tất cả các dòng khớp với giá trị tìm kiếm, kèm đầy đủ các cột, ghi ra một vùng đích trên trang tính.

Cú pháp:

=dvdMCLookup(ReturnCols; LookupColIndex; LookupValue; outputRange)
Tham sốBắt buộcMô tả
ReturnColsCóCác cột chứa giá trị trả về.
LookupColIndexCóChỉ số cột dùng để dò tìm, tính từ 1 trong vùng ReturnCols.
LookupValueCóGiá trị cần tìm.
outputRangeCóVùng đích để hiển thị kết quả.

Ví dụ:

=dvdMCLookup($A$5:$F$500; 2; $H$3; $H$6:$M$40)
// → "Done", đồng thời toàn bộ các dòng có mã hạng mục ở H3 được ghi vào H6:M40

Lưu ý

  • Ô chứa công thức chỉ hiển thị Done; dữ liệu nằm ở outputRange. Kết quả chỉ được ghi trong vùng này — nhiều hơn số dòng của vùng thì dòng cuối ghi … còn N kết quả — mở rộng outputRange thay vì tràn đè lên ô bên dưới. outputRange là một ô thì kết quả trải xuống từ ô đó.
  • Hàm so khớp theo chuỗi văn bản (không phân biệt chữ hoa/thường): số 5 khớp ô chứa 5 hoặc chữ "5", nhưng không khớp "05" hay "5.0" — khác dvdXlookup / dvdELookup / dvdTableLookup vốn so cả theo giá trị số.
  • Hàm tính lại khi ReturnCols hoặc LookupValue đổi (không còn volatile), và chỉ ghi khi kết quả thật sự đổi — sửa chỗ khác trong sổ không làm mất Ctrl+Z. Luôn ghi vào đúng sổ chứa công thức, kể cả khi đang mở nhiều sổ có sheet trùng tên.
  • Không có dòng nào khớp thì hàm trả #N/A và dọn kết quả cũ trong outputRange.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô A14 rồi gõ =dvdm, chọn DVDMCLOOKUP trong danh sách gợi ý (1) và nhấn Tab.

Bước 1

Bước 2. Chọn bảng dữ liệu (1), gõ 1 (Hạng mục là cột thứ nhất của bảng), chọn ô cần lọc (2) rồi chọn vùng đích trống có cùng số cột (3). Khung gợi ý (4) mô tả đối số đang nhập.

Bước 2

Bước 3. Nhấn Enter: ô công thức hiện Done (1), bốn dòng của hạng mục Móng được ghi vào vùng đích (2), dòng thừa để trống. Đổi A13 thành "Cột" là vùng đích tự cập nhật; kết quả nhiều hơn số dòng của vùng thì dòng cuối báo … còn N kết quả — mở rộng outputRange.

Bước 3

dvdMVLookup ​

Trả về mọi giá trị khớp của một cột lệch so với cột dò: kết quả đầu tiên hiện tại ô công thức, các kết quả còn lại được ghi xuống vùng đích.

Cú pháp:

=dvdMVLookup(LookupValue; LookupCol; OffsetCol; outputRange)
Tham sốBắt buộcMô tả
LookupValueCóGiá trị cần tìm.
LookupColCóCột chứa giá trị cần tìm.
OffsetColCóSố cột dịch sang phải so với LookupCol để lấy giá trị trả về.
outputRangeCóVùng đích chứa các giá trị thứ 2 trở đi (dành cho Excel 2019/2016 không có mảng động).

Ví dụ:

=dvdMVLookup($H$3; $B$5:$B$500; 4; $J$4:$J$40)
// → khối lượng đầu tiên của mã công tác H3; các khối lượng còn lại ghi vào J4:J40

Lưu ý

  • Các kết quả thứ 2 trở đi chỉ được ghi trong outputRange (chọn vùng trống ngoài bảng dữ liệu); thừa thì dòng cuối ghi … còn N kết quả — mở rộng outputRange. outputRange là một ô thì trải xuống từ ô đó.
  • Hàm so khớp theo chuỗi văn bản (không phân biệt chữ hoa/thường) như dvdMCLookup, không so theo giá trị số như dvdXlookup / dvdELookup / dvdTableLookup: "05" hay "5.0" không khớp số 5.
  • Hàm là volatile (cột kết quả nằm lệch so với LookupCol nên Excel không tự theo dõi được) nhưng chỉ ghi khi kết quả thật sự đổi — sửa chỗ khác không làm mất Ctrl+Z; luôn ghi vào đúng sổ chứa công thức.
  • Không tìm thấy thì hàm trả #VALUE! và dọn kết quả cũ trong outputRange.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô B14 rồi gõ =dvdm, chọn DVDMVLOOKUP trong danh sách gợi ý (1) và nhấn Tab.

Bước 1

Bước 2. Chọn ô cần tìm A14, cột dò Hạng mục (1), rồi gõ số cột lệch sang phải: 1 để lấy cột Tên công tác (2). Khung gợi ý (3) giải thích đối số OffsetCol.

Bước 2

Bước 3. Gõ dấu ; rồi chọn vùng đích ngay dưới ô công thức cho các kết quả thứ 2 trở đi (1). Hộp Đối số Hàm (Ctrl+A) cho thấy kết quả đầu tiên (2). Bấm OK (3).

Bước 3

Bước 4. Nhấn Enter: công tác đầu tiên của hạng mục Móng hiện tại ô công thức (1), ba công tác còn lại được ghi xuống vùng đích (2). Không tìm thấy thì hàm trả #VALUE! và dọn vùng đích.

Bước 4

dvdTableLookup ​

Dò tìm hai chiều: lấy giá trị nằm ở giao của dòng và cột được xác định bởi tiêu đề.

Cú pháp:

=dvdTableLookup(LookupRowValue; LookupColumnValue; TableRange)
Tham sốBắt buộcMô tả
LookupRowValueCóGiá trị cần tìm trong cột đầu tiên của bảng.
LookupColumnValueCóGiá trị cần tìm trong hàng đầu tiên của bảng.
TableRangeCóBảng dữ liệu, bao gồm cả tiêu đề hàng và tiêu đề cột.

Ví dụ:

=dvdTableLookup("D16"; "Cấp bền B22.5"; $A$5:$H$30)
// → 1.284 (tra định mức theo đường kính thép và cấp bền bê tông)

Lưu ý

  • Không tìm thấy dòng hoặc cột tương ứng thì hàm trả chuỗi Không tìm thấy kết quả.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô D11 rồi gõ =dvdt, chọn DVDTABLELOOKUP trong danh sách gợi ý (1) và nhấn Tab.

Bước 1

Bước 2. Chọn ô cấp bền B11 (tìm ở cột đầu của bảng), ô độ sụt C11 (tìm ở hàng đầu của bảng), rồi chọn cả bảng giá kèm tiêu đề hàng và cột (1). Khung gợi ý (2) mô tả đối số đang nhập.

Bước 2

Bước 3. Nhấn Enter rồi chép xuống D12: hàm lấy giá trị ở giao của hàng B25 và cột 12±2 (2) — 1.320.000 (1). Không thấy tiêu đề hàng hoặc cột thì hàm trả "Không tìm thấy kết quả".

Bước 3

dvdLookupAllSheets ​

Dò tìm một giá trị trên tất cả các trang tính đang hiển thị của workbook và trả về giá trị ở cột chỉ định.

Cú pháp:

=dvdLookupAllSheets(lookupValue; lookup_column; result_column)
Tham sốBắt buộcMô tả
lookupValueCóGiá trị cần tìm kiếm.
lookup_columnCóSố thứ tự cột chứa giá trị cần tìm (cột A là 1).
result_columnCóSố thứ tự cột chứa giá trị trả về.

Ví dụ:

=dvdLookupAllSheets(A6; 2; 6)
// → khối lượng ở cột F của dòng có mã công tác A6, tìm trên mọi sheet khối lượng

Lưu ý

  • Hàm bỏ qua chính trang tính chứa công thức và các trang tính đang ẩn; không tìm thấy thì trả #N/A.
  • Chỉ trả về kết quả khớp đầu tiên: các sheet được duyệt theo thứ tự tab; trong mỗi sheet, hàm tìm từ dòng 2 trở xuống và xét dòng 1 sau cùng.
  • So khớp trọn ô, không phân biệt chữ hoa/thường; số so theo giá trị, không theo định dạng hiển thị ("0,5" khớp ô chứa 0,5). Dấu * (chuỗi bất kỳ) và ? (một ký tự) là ký tự đại diện; gõ ~*, ~? để tìm đúng dấu đó. Dòng đang ẩn hay bị lọc vẫn được dò.
  • Ô kết quả trống thì hàm trả chuỗi rỗng; ô kết quả là lỗi thì trả đúng lỗi đó.
  • Cột được tính theo số thứ tự cột của trang tính, không phải theo vị trí trong một vùng.
  • Tìm trong sổ chứa công thức, kể cả khi đang mở nhiều sổ. Hàm không nhận vùng nào làm đối số nên không tự tính lại khi dữ liệu ở sheet khác đổi, hoặc khi ẩn/hiện một sheet — bấm Ctrl+Alt+F9 để cập nhật. Lần tính đầu tiên trong phiên, kết quả có thể đổi một nhịp sau khi add-in đọc xong danh sách sheet ẩn.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Các sheet tầng có cùng bố cục: mã cấu kiện ở cột B — cột số 2 của trang tính (1), khối lượng bê tông ở cột F — cột số 6 (2).

Bước 1

Bước 2. Sang sheet Tra cứu, chọn ô B4 rồi gõ =dvdlo — danh sách gợi ý hiện DVDLOOKUPALLSHEETS (1). Nhấn Tab.

Bước 2

Bước 3. Chọn ô mã A4 (1), gõ 2 (cột B chứa mã) và 6 (cột F chứa khối lượng) — số cột tính trên sheet tầng. Khung gợi ý (2) mô tả đối số đang nhập.

Bước 3

Bước 4. Nhấn Enter rồi chép xuống: mỗi mã lấy khối lượng từ sheet tầng chứa nó (1) — D3-12, V3-01 ở Tầng 3, C5-02 ở Tầng 5. Mã gõ sai D3-21 không có ở sheet nào nên trả #N/A (2). Hàm bỏ qua sheet chứa công thức và sheet ẩn; số liệu tầng đổi thì nhấn Ctrl+Alt+F9.

Bước 4

dvdUnique ​

Trả về mảng một cột chứa các giá trị duy nhất của một vùng.

Cú pháp:

=dvdUnique(rng)
Tham sốBắt buộcMô tả
rngCóPhạm vi dữ liệu đầu vào.

Ví dụ:

=dvdUnique($B$6:$B$500)
// → danh sách hạng mục không trùng: Móng, Cột, Dầm, Sàn

Lưu ý

  • Hàm trả về mảng: Excel 365/2021 tự tràn (spill); Excel 2019 trở về trước cần chọn sẵn vùng rồi nhấn Ctrl+Shift+Enter, hoặc dùng dvdUniqueV.
  • Giá trị được so sánh không phân biệt chữ hoa và chữ thường.
  • Ô trống trong vùng được bỏ qua (như dvdUniqueV), nên chọn dư vài dòng trống cuối bảng cũng không sinh mục trống trong kết quả.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô B14 rồi gõ =dvduniq, chọn DVDUNIQUE trong danh sách gợi ý (1) và nhấn Tab.

Bước 1

Bước 2. Chọn cột Hạng mục của bảng (1) — ô trống trong vùng được bỏ qua. Khung gợi ý (2) mô tả đối số duy nhất của hàm.

Bước 2

Bước 3. Nhấn Enter: Excel 365/2021 tự tràn kết quả xuống B14:B17, mỗi hạng mục một lần theo thứ tự xuất hiện (1) (không phân biệt hoa/thường). Excel 2019 trở về trước: chọn sẵn B14:B17, gõ công thức rồi nhấn Ctrl+Shift+Enter.

Bước 3

dvdUniqueV ​

Trả về giá trị duy nhất đầu tiên tại ô công thức và ghi các giá trị duy nhất còn lại xuống vùng đích — dành cho phiên bản Excel không hỗ trợ mảng động.

Cú pháp:

=dvdUniqueV(inputRange; outputRange)
Tham sốBắt buộcMô tả
inputRangeCóDải ô chứa các giá trị cần tìm giá trị duy nhất.
outputRangeCóDải ô để hiển thị các giá trị duy nhất còn lại (dành cho Excel 2019/2016).

Ví dụ:

=dvdUniqueV($B$6:$B$500; $H$7:$H$40)
// → "Móng" tại ô công thức; các hạng mục còn lại ghi vào H7:H40

Lưu ý

  • Các giá trị thứ 2 trở đi chỉ được ghi trong outputRange; thừa thì dòng cuối ghi … còn N kết quả — mở rộng outputRange.
  • Hàm tính lại khi inputRange đổi (không còn volatile) và chỉ ghi khi kết quả thật sự đổi — sửa chỗ khác không làm mất Ctrl+Z; luôn ghi vào đúng sổ chứa công thức.
  • Các ô trống trong vùng nguồn được bỏ qua.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô đầu danh sách F4 và gõ =dvduniq — Excel gợi ý ba hàm; chọn DVDUNIQUEV (1) rồi nhấn Tab.

Bước 1

Bước 2. Quét cột vật liệu (1) làm inputRange, gõ ; rồi quét vùng ngay dưới ô công thức $F$5:$F$12 làm outputRange. Khung gợi ý (2) giải thích đối số đang nhập.

Bước 2

Bước 3. Hộp Đối số Hàm (Ctrl+A ngay sau tên hàm) cho thấy vùng nguồn (1), vùng đích còn trống (2) và giá trị trả về ô công thức (3).

Bước 3

Bước 4. Nhấn Enter: ô công thức F4 hiện vật liệu đầu tiên (1); 4 vật liệu còn lại được ghi xuống F5:F8 (2) dưới dạng giá trị ngay sau lượt tính, phần thừa của vùng đích để trống. Sửa cột C thì danh sách tự cập nhật.

Bước 4

dvdUnique2DArray ​

Giữ lại các dòng duy nhất của một mảng hai chiều dựa trên một cột làm khóa.

Cú pháp:

=dvdUnique2DArray(sArray; colIndex; HasTitle)
Tham sốBắt buộcMô tả
sArrayCóMảng hai chiều đầu vào.
colIndexCóChỉ số cột làm khóa duy nhất, tính từ 1.
HasTitleCóTRUE nếu vùng dữ liệu có dòng tiêu đề.

Ví dụ:

=dvdUnique2DArray($A$5:$F$500; 2; TRUE)
// → bảng nhà thầu phụ, mỗi mã chỉ giữ lại dòng xuất hiện đầu tiên

Lưu ý

  • Hàm trả về mảng hai chiều: Excel 365/2021 tự tràn; phiên bản cũ cần nhập dạng công thức mảng bằng Ctrl+Shift+Enter.
  • HasTitle bằng TRUE thì dòng tiêu đề luôn được giữ nguyên ở đầu kết quả.
  • Dòng có ô khóa trống bị bỏ qua, không xuất hiện trong kết quả.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô F3 (góc trên-trái của bảng kết quả) và gõ =dvduniq; chọn DVDUNIQUE2DARRAY trong danh sách gợi ý (1) rồi nhấn Tab.

Bước 1

Bước 2. Quét cả bảng kể cả dòng tiêu đề (1), rồi gõ 2 (cột Mã VT làm khóa) và TRUE (bảng có dòng tiêu đề). Khung gợi ý (2) in đậm đối số đang nhập.

Bước 2

Bước 3. Nhấn Enter: kết quả tràn ra F3:I8 (1) — dòng tiêu đề và mỗi mã vật tư một dòng (lần xuất hiện đầu tiên); các dòng trùng mã 7, 8, 10 bị bỏ.

Bước 3

dvdFilter2DArray ​

Lọc một mảng hai chiều theo điều kiện áp dụng cho một cột và trả về các dòng thỏa điều kiện.

Cú pháp:

=dvdFilter2DArray(DataArray; ColumnIndex; Criteria; HasTitle)
Tham sốBắt buộcMô tả
DataArrayCóMảng hai chiều chứa dữ liệu cần lọc.
ColumnIndexCóChỉ số cột áp dụng điều kiện lọc, tính từ 1.
CriteriaCóĐiều kiện lọc, ví dụ ">5", "abc", "abc*".
HasTitleCóTRUE nếu vùng dữ liệu có dòng tiêu đề.

Ví dụ:

=dvdFilter2DArray($A$5:$F$500; 6; ">0"; TRUE)
// → bảng chỉ còn các công tác có khối lượng lớn hơn 0

=dvdFilter2DArray($A$5:$F$500; 2; "BT*"; TRUE)
// → các dòng có mã công tác bắt đầu bằng "BT"

Lưu ý

  • Hàm trả về mảng hai chiều: Excel 365/2021 tự tràn; phiên bản cũ cần nhập dạng công thức mảng bằng Ctrl+Shift+Enter.
  • Điều kiện chấp nhận toán tử so sánh (">5", ">=2", "<>0") và ký tự đại diện (*, ?) như COUNTIF: "BT*" hay "=BT*" lọc mã bắt đầu bằng BT, "<>BT*" lấy các dòng còn lại.
  • Số thập phân trong điều kiện viết dấu phẩy hay dấu chấm đều được (">0,5" = ">0.5"); "1.250.000" là 1250000.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Chọn ô F3 (góc trên-trái của bảng kết quả) và gõ =dvdf; chọn DVDFILTER2DARRAY (1) rồi nhấn Tab.

Bước 1

Bước 2. Quét cả bảng kể cả dòng tiêu đề (1), rồi gõ 4 (cột Khối lượng), điều kiện ">0" và TRUE (có dòng tiêu đề). Khung gợi ý (2) nêu các dạng điều kiện hợp lệ.

Bước 2

Bước 3. Nhấn Enter: kết quả tràn ra F3:I7 (1) — dòng tiêu đề và 4 công tác có khối lượng lớn hơn 0; các dòng khối lượng 0 bị loại.

Bước 3

dvdSumVisible ​

Cộng giá trị của các ô đang hiển thị, bỏ qua ô nằm trong dòng hoặc cột bị ẩn.

Cú pháp:

=dvdSumVisible(SumRng)
Tham sốBắt buộcMô tả
SumRngCóVùng tính tổng giá trị của các ô được hiển thị.

Ví dụ:

=dvdSumVisible($F$6:$F$500)
// → tổng thành tiền của các dòng còn hiển thị sau khi lọc hạng mục

Lưu ý

  • Hàm là volatile: Excel tính lại mỗi khi bảng tính thay đổi, nên tránh dùng hàng loạt trên bảng rất lớn.
  • Ô ẩn do lọc AutoFilter, do ẩn thủ công hay do dvdAutoHide đều được bỏ qua.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Bảng đang lọc cột Hạng mục chỉ còn Móng (dòng 7–9 và 11 bị ẩn). Ở ô tổng F12 gõ =dvdsu và chọn DVDSUMVISIBLE (1).

Bước 1

Bước 2. Quét cả cột thành tiền $F$4:$F$11 (1) — kể cả các dòng đang ẩn, hàm tự bỏ qua chúng. Khung gợi ý (2) giải thích đối số.

Bước 2

Bước 3. Nhấn Enter: F12 = 426.746.000 (1) — chỉ cộng 4 dòng đang hiển thị (SUM cả cột cho 827.780.000). Bỏ lọc thì ô tự tính lại thành tổng đủ.

Bước 3

dvdSumIfColor ​

Cộng giá trị của các ô có màu nền giống với màu nền của một ô mẫu.

Cú pháp:

=dvdSumIfColor(rngSum; rngCellColor)
Tham sốBắt buộcMô tả
rngSumCóVùng tính tổng giá trị.
rngCellColorCóÔ mang màu nền dùng làm điều kiện.

Ví dụ:

=dvdSumIfColor($F$6:$F$500; $H$3)
// → tổng khối lượng của các dòng được tô cùng màu với ô H3 (ví dụ màu đánh dấu phát sinh)

Lưu ý

  • Đổi màu nền của một ô không làm Excel tính lại; hàm tự tính lại ở lần Excel tính kế tiếp (sửa bất kỳ ô nào, hoặc nhấn F9).
  • So màu theo chỉ số bảng màu của Excel (như bản VBA gốc): hai màu tô rất gần nhau có thể được coi là cùng màu.
  • Hàm so sánh theo màu nền tô trực tiếp, không nhận diện màu do định dạng có điều kiện tạo ra.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Các dòng phát sinh được tô vàng giống ô chú giải G4. Ở ô E12 gõ =dvdsu và chọn DVDSUMIFCOLOR (1).

Bước 1

Bước 2. Quét cột thành tiền (1), gõ ; rồi bấm ô mẫu màu G4 (2). Khung gợi ý (3) giải thích đối số đang nhập.

Bước 2

Bước 3. Nhấn Enter: E12 = 15.024.000 (1) — tổng 3 dòng tô vàng (dòng 7, 9, 11). Đổi màu ô không làm Excel tính lại: sửa một ô bất kỳ hoặc nhấn F9.

Bước 3

dvdCountIfColor ​

Đếm số ô trong vùng có màu nền giống với màu nền của một ô mẫu.

Cú pháp:

=dvdCountIfColor(RangeToCount; ReferenceCell)
Tham sốBắt buộcMô tả
RangeToCountCóPhạm vi các ô cần đếm.
ReferenceCellCóÔ chứa màu nền dùng làm tham chiếu.

Ví dụ:

=dvdCountIfColor($B$6:$B$500; $H$4)
// → 12 (số hạng mục được tô màu cảnh báo chậm tiến độ)

Lưu ý

  • Đổi màu nền của một ô không làm Excel tính lại; hàm tự tính lại ở lần Excel tính kế tiếp (sửa bất kỳ ô nào, hoặc nhấn F9).
  • So màu theo chỉ số bảng màu của Excel (như bản VBA gốc): hai màu tô rất gần nhau có thể được coi là cùng màu.
  • Hàm so sánh theo màu nền tô trực tiếp, không nhận diện màu do định dạng có điều kiện tạo ra.
  • Hàm đếm cả ô trống có màu khớp. Ô mẫu không tô màu thì mọi ô không tô màu trong vùng (tới dòng/cột cuối đang dùng của sheet) đều được đếm.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Các công việc chậm tiến độ được tô đỏ ở cột B, giống ô chú giải F4. Ở ô D12 gõ =dvdcou và chọn DVDCOUNTIFCOLOR (1).

Bước 1

Bước 2. Quét cột công việc (1), gõ ; rồi bấm ô mẫu màu F4 (2). Khung gợi ý (3) giải thích đối số đang nhập.

Bước 2

Bước 3. Nhấn Enter: D12 = 4 (1) công việc chậm tiến độ. Tô hoặc bỏ màu một ô rồi nhấn F9 để đếm lại (đổi màu không làm Excel tính lại).

Bước 3

dvdAutoHide ​

Ẩn tự động các dòng không thỏa điều kiện và đánh lại số thứ tự cho những dòng còn hiển thị.

Cú pháp:

=dvdAutoHide(Target; Cells; Conditions; [OrdersRange]; [Title])
Tham sốBắt buộcMô tả
TargetCóVùng các dòng thuộc phạm vi xử lý ẩn/hiện.
CellsCóVùng chứa giá trị để so với điều kiện.
ConditionsCóĐiều kiện, ví dụ "0", ">=2", "<>0"; khai báo được nhiều điều kiện bằng một vùng.
OrdersRangeKhôngVùng đánh số thứ tự lại sau khi ẩn.
TitleKhôngChuỗi hiển thị trong ô công thức, mặc định DVDAutoHide.

Ví dụ:

=dvdAutoHide($A$6:$A$500; $F$6:$F$500; "<>0"; $A$6:$A$500; "Ẩn dòng khối lượng 0")
// → giữ lại các dòng có khối lượng khác 0, ẩn phần còn lại và đánh số thứ tự liên tục

Lưu ý

  • Dòng nào có ít nhất một ô trong Cells thỏa tất cả điều kiện thì được giữ hiển thị; các dòng còn lại bị ẩn.
  • Ô trống thỏa điều kiện "<>0": dòng có khối lượng để trống (như dòng tiêu đề nhóm) vẫn hiện và được đánh số trong OrdersRange.
  • Toán tử >, <, >=, <= so một số với ô chữ (hay ngược lại) luôn không thỏa, như COUNTIF: ô ghi chữ Móng không qua điều kiện ">0". Số trong điều kiện viết dấu phẩy hay dấu chấm đều được (">0,5" = ">0.5").
  • Việc ẩn dòng chỉ chạy sau khi Excel tính xong, nên kết quả có thể xuất hiện chậm một nhịp so với lúc gõ công thức.
  • Hàm là volatile: Excel tính lại mỗi khi bảng tính thay đổi.
  • Đặt công thức ở ô nằm ngoài vùng Target để công thức không bị ẩn theo.

Hướng dẫn bằng hình

Thực hành

Tải file mẫu của hàm này — dữ liệu y như hình dưới, ô cần gõ công thức đã được chọn sẵn.

Bước 1. Bảng khối lượng có nhiều công tác khối lượng 0. Chọn ô B15 — nằm ngoài vùng sẽ ẩn — gõ =dvda và chọn DVDAUTOHIDE (1).

Bước 1

Bước 2. Quét cột STT làm Target (1), cột khối lượng làm Cells (2), rồi gõ điều kiện giữ dòng "<>0". Khung gợi ý (3) nêu các dạng điều kiện.

Bước 2

Bước 3. Gõ tiếp cột STT làm OrdersRange và một tiêu đề. Hộp Đối số Hàm cho thấy điều kiện (1), vùng được đánh lại số thứ tự (2) và chữ sẽ hiện trong ô (3). Bấm OK (4).

Bước 3

Bước 4. Ô B15 hiện tiêu đề (2); ngay sau lượt tính, 4 dòng khối lượng 0 (dòng 5, 7, 9, 12) bị ẩn và cột STT được đánh lại 1–6 (1). Đổi khối lượng một dòng thành 0 thì dòng đó tự ẩn ở lần tính kế tiếp.

Bước 4

Phát hành theo giấy phép DVDAddin.