MINI.MIS - Hàm hỗ trợ mảng tràn

TỔNG QUAN BÀI VIẾT

a_FillDown

Chức năng: Hàm lấy giá trị từ ô bắt đầu và tự động điền xuống các ô phía dưới cho đến trước khi gặp ô trốngtheo quy tắc của vùng dữ liệu. Hàm giúp thay thế các ô trống bằng giá trị gần nhất phía trên, rất hữu ích khi chuẩn hóa dữ liệu trước khi phân tích hoặc lập báo cáo.

Cú pháp: =a_FillDown(StartCell)

Trong đó: StartCell: Ô bắt đầu của vùng dữ liệu cần điền giá trị xuống.

Ví dụ: =a_FillDown(A2) → Trả về giá trị tương ứng tại hàng hiện tại sau khi áp dụng quy tắc điền xuống từ cột bắt đầu tại A2.

Nếu cột A có dữ liệu:

A2: Miền Bắc
A3:
A4:
A5: Miền Trung
A6:

Thì sử dụng =a_FillDown(A2) trên các hàng tương ứng sẽ cho kết quả:

Miền Bắc
Miền Bắc
Miền Bắc
Miền Trung
Miền Trung

Lưu ý: Hàm đặc biệt hữu ích khi xử lý các bảng dữ liệu có nhiều ô trống do sử dụng định dạng gộp ô hoặc chỉ nhập giá trị ở dòng đầu của từng nhóm. Để đạt kết quả chính xác, ô bắt đầu nên nằm trong vùng dữ liệu liên tục cần điền xuống.


a_FillDownLast

Chức năng: Hàm trả về giá trị cuối cùng không trống phía trên của hàng hiện tại trong cùng vùng dữ liệu. Hàm giúp kế thừa giá trị gần nhất để lấp đầy các ô trống khi dữ liệu được tổ chức theo nhóm hoặc chỉ ghi giá trị ở dòng đầu tiên.

Cú pháp: =a_FillDownLast(StartCell)

Trong đó: StartCell: Ô bắt đầu của vùng dữ liệu cần áp dụng quy tắc điền xuống.

Ví dụ: =a_FillDownLast(A2) → Trả về giá trị không trống gần nhất phía trên của hàng hiện tại.

Nếu cột A có dữ liệu:

A2: Miền Bắc
A3:
A4:
A5: Miền Trung
A6:

Thì sử dụng =a_FillDownLast(A2) trên các hàng tương ứng sẽ cho kết quả:

Miền Bắc
Miền Bắc
Miền Bắc
Miền Trung
Miền Trung

Lưu ý: Hàm rất hữu ích khi xử lý dữ liệu có nhiều ô trống do gộp ô hoặc do chỉ nhập giá trị ở dòng đầu của từng nhóm. Kết quả phản ánh giá trị không trống gần nhất phía trên trong vùng dữ liệu, giúp chuẩn hóa dữ liệu trước khi lọc, tổng hợp hoặc lập báo cáo.


a_FillRight

Chức năng: Hàm tự động điền giá trị sang phải dựa trên ô bắt đầu của vùng dữ liệu cho đến trước khi gặp ô trống. Hàm giúp thay thế các ô trống bằng giá trị gần nhất ở bên trái, phù hợp để chuẩn hóa dữ liệu được trình bày theo chiều ngang.

Cú pháp: =a_FillRight(StartCell)

Trong đó: StartCell: Ô bắt đầu của vùng dữ liệu cần điền giá trị sang phải.

Ví dụ: =a_FillRight(B2) → Trả về giá trị tương ứng tại cột hiện tại sau khi áp dụng quy tắc điền sang phải từ vùng bắt đầu tại B2.

Nếu hàng 2 có dữ liệu:

B2: Quý I
C2:
D2:
E2: Quý II
F2:

Thì sử dụng =a_FillRight(B2) trên các cột tương ứng sẽ cho kết quả:

Quý I
Quý I
Quý I
Quý II
Quý II

Ứng dụng: Hàm phù hợp để xử lý các bảng dữ liệu có tiêu đề hoặc thông tin nhóm chỉ được nhập ở cột đầu tiên hoặc sử dụng gộp ô theo chiều ngang. Sau khi điền giá trị sang phải, dữ liệu sẽ đầy đủ hơn để phục vụ tra cứu, tổng hợp, PivotTable hoặc xuất sang các hệ thống khác.

Lưu ý: Để kết quả chính xác, ô bắt đầu nên nằm trong vùng dữ liệu liên tục cần xử lý. Hàm hoạt động theo chiều ngang và chỉ kế thừa giá trị không trống gần nhất ở bên trái.


a_FillRightLast

Chức năng: Hàm trả về giá trị cuối cùng không trống ở bên trái của cột hiện tại trong cùng vùng dữ liệu. Hàm giúp kế thừa giá trị gần nhất theo chiều ngang để lấp đầy các ô trống trong các bảng dữ liệu được trình bày theo cột.

Cú pháp: =a_FillRightLast(StartCell)

Trong đó: StartCell: Ô bắt đầu của vùng dữ liệu cần áp dụng quy tắc điền sang phải.

Ví dụ: =a_FillRightLast(B2) → Trả về giá trị không trống gần nhất ở bên trái của cột hiện tại.

Nếu hàng 2 có dữ liệu:

B2: Quý I
C2:
D2:
E2: Quý II
F2:

Thì sử dụng =a_FillRightLast(B2) trên các cột tương ứng sẽ cho kết quả:

Quý I
Quý I
Quý I
Quý II
Quý II

Ứng dụng: Hàm thích hợp để chuẩn hóa dữ liệu theo chiều ngang trước khi thực hiện các phép tính, tạo báo cáo, chuyển đổi cấu trúc dữ liệu hoặc xử lý các bảng có nhiều ô trống do gộp ô.

Lưu ý: Kết quả của hàm luôn là giá trị không trống gần nhất ở bên trái trong vùng dữ liệu được xác định từ ô bắt đầu. Để đạt kết quả chính xác, ô bắt đầu nên nằm trong vùng dữ liệu liên tục cần xử lý.


a_DuplicateRow

Chức năng: Hàm tìm các dòng dữ liệu bị trùng lặp trong một vùng dữ liệu và trả về danh sách các dòng trùng duy nhất. Hàm rất hữu ích để kiểm tra chất lượng dữ liệu, phát hiện bản ghi trùng trước khi tổng hợp hoặc nhập liệu.

Cú pháp: =DuplicateRow(Rng)

Trong đó: Rng: Vùng dữ liệu cần kiểm tra các dòng trùng lặp.

Ví dụ:
=DuplicateRow(A2:D100) → Trả về các dòng trong vùng A2:D100 xuất hiện từ hai lần trở lên, mỗi dòng chỉ được trả về một lần.

Nếu dữ liệu gồm:

Mã    Tên     Phòng
A01   An      HC
A02   Bình    KT
A01   An      HC
A03   Cường   KD
A02   Bình    KT

Thì:

=DuplicateRow(A2:C6)

sẽ trả về:

A01   An      HC
A02   Bình    KT

Ứng dụng: Hàm hữu ích để kiểm tra chất lượng dữ liệu, phát hiện bản ghi bị nhập nhiều lần, đối chiếu dữ liệu trước khi hợp nhất, hoặc lập danh sách các bản ghi trùng để phục vụ việc rà soát và làm sạch dữ liệu.

Lưu ý: Hàm so sánh toàn bộ giá trị trên từng dòng để xác định trùng lặp, nghĩa là chỉ khi tất cả các cột trong một dòng đều giống nhau thì dòng đó mới được xem là trùng. Các dòng trống sẽ được bỏ qua. Nếu không có dòng nào bị trùng, hàm trả về giá trị 0. Hàm trả về kết quả dưới dạng mảng động nên cần đủ không gian để hiển thị toàn bộ danh sách các dòng trùng.


a_RandBetween

Chức năng: Hàm tạo một danh sách các số nguyên ngẫu nhiên không trùng lặp trong một khoảng xác định. Kết quả có thể được trả về theo hàng ngang hoặc cột dọc, phù hợp để tạo dữ liệu mẫu hoặc chọn ngẫu nhiên các giá trị.

Cú pháp: =a_RandBetween(BottomValue, TopValue, Count, [Vertical])

Trong đó:

  • BottomValue: Giá trị nhỏ nhất của khoảng số.
  • TopValue: Giá trị lớn nhất của khoảng số.
  • Count: Số lượng số ngẫu nhiên cần tạo.
  • Vertical (tùy chọn):
    • 0 hoặc bỏ qua: Trả về theo một hàng ngang (mặc định).
    • 1: Trả về theo một cột dọc.

Ví dụ:
=a_RandBetween(1,100,5) → Trả về 5 số nguyên ngẫu nhiên không trùng lặp từ 1 đến 100 theo hàng ngang, ví dụ: {15,72,8,91,43}.

=a_RandBetween(1,50,10,1) → Trả về 10 số nguyên ngẫu nhiên không trùng lặp từ 1 đến 50 theo cột dọc.

=a_RandBetween(1000,9999,20) → Tạo 20 mã số ngẫu nhiên gồm 4 chữ số để làm dữ liệu thử nghiệm.

Ứng dụng: Hàm thích hợp để bốc thăm ngẫu nhiên, chọn mẫu khảo sát, tạo dữ liệu kiểm thử, sinh mã số tạm thời hoặc tạo danh sách số không trùng lặp trong một khoảng xác định.

Lưu ý: Số lượng (Count) không được lớn hơn tổng số giá trị có trong khoảng từ BottomValue đến TopValue. Nếu khoảng giá trị không hợp lệ hoặc số lượng yêu cầu vượt quá số phần tử có thể tạo, hàm sẽ trả về lỗi. Các số được tạo luôn là số nguyên và không có giá trị trùng lặp.


a_RangeCompare

Chức năng: Hàm so sánh hai vùng dữ liệu và trả về các giá trị theo nhiều kiểu so sánh khác nhau, như phần giao, phần khác biệt hoặc hợp của hai danh sách. Hàm cũng có thể trả kết quả dưới dạng mảng hoặc chuỗi văn bản, phù hợp để đối chiếu, kiểm tra và tổng hợp dữ liệu.

Cú pháp: =RangeCompare(DataRange1, DataRange2, [CompareType], [MaxCol], [MaxRow])

Trong đó:

  • DataRange1: Vùng dữ liệu thứ nhất.
  • DataRange2: Vùng dữ liệu thứ hai.
  • CompareType (tùy chọn): Kiểu so sánh.
    • 0 hoặc 3: Trả về các giá trị có trong cả hai vùng.
    • 1: Trả về các giá trị chỉ có trong DataRange1.
    • 2: Trả về các giá trị chỉ có trong DataRange2.
    • 4: Trả về các giá trị chỉ xuất hiện ở một trong hai vùng (loại bỏ phần giao).
    • 5: Trả về tất cả các giá trị không trùng lặp của hai vùng (hợp của hai tập dữ liệu).
    • Nếu CompareType là số âm (-1, -2, -4, -5...), kết quả sẽ được trả về dưới dạng chuỗi, các giá trị được phân tách bằng dấu chấm phẩy (;).
  • MaxCol (tùy chọn): Số cột tối đa của mảng kết quả.
  • MaxRow (tùy chọn): Số hàng tối đa của mảng kết quả.

Ví dụ:
=RangeCompare(A2:A20,C2:C20) → Trả về các giá trị xuất hiện trong cả hai vùng dữ liệu.

=RangeCompare(A2:A20,C2:C20,1) → Trả về các giá trị chỉ có trong vùng A2:A20.

=RangeCompare(A2:A20,C2:C20,2) → Trả về các giá trị chỉ có trong vùng C2:C20.

=RangeCompare(A2:A20,C2:C20,4) → Trả về các giá trị khác biệt giữa hai vùng, loại bỏ các giá trị trùng nhau.

=RangeCompare(A2:A20,C2:C20,5) → Trả về toàn bộ các giá trị không trùng lặp của hai vùng dữ liệu.

=RangeCompare(A2:A20,C2:C20,-1) → Trả về các giá trị chỉ có trong A2:A20 dưới dạng chuỗi, ví dụ: A;C;F;H.

=RangeCompare(A2:A20,C2:C20,5,3) → Trả về kết quả dưới dạng mảng với tối đa 3 cột.

Ứng dụng: Hàm hữu ích để đối chiếu danh sách khách hàng, mã hàng, nhân viên, sản phẩm hoặc bất kỳ tập dữ liệu nào nhằm xác định dữ liệu trùng lặp, dữ liệu thiếu, dữ liệu chỉ có ở một nguồn hoặc hợp nhất hai danh sách không trùng lặp.

Lưu ý: Hàm chỉ xét các giá trị khác rỗng và tự động loại bỏ các giá trị trùng lặp trong từng vùng dữ liệu trước khi so sánh. Khi không tìm thấy kết quả phù hợp, hàm trả về "null". Các tham số MaxColMaxRow giúp kiểm soát kích thước mảng kết quả khi hiển thị trên trang tính.


a_REPT

Chức năng: Hàm lặp lại toàn bộ một vùng dữ liệu nhiều lần và trả về kết quả dưới dạng mảng. Vùng dữ liệu có thể được nhân bản theo chiều ngang hoặc chiều dọc, thuận tiện cho việc tạo dữ liệu mẫu hoặc mở rộng bảng dữ liệu.

Cú pháp: =a_REPT(InputRange, NumCopies, [Vertical])

Trong đó:

  • InputRange: Vùng dữ liệu cần lặp lại.
  • NumCopies: Số lần lặp lại vùng dữ liệu.
  • Vertical (tùy chọn):
    • 0 hoặc bỏ qua: Lặp theo chiều ngang (mặc định).
    • 1: Lặp theo chiều dọc.

Ví dụ: Nếu vùng A1:B2 chứa:

A   B
C   D

=a_REPT(A1:B2,3) → Trả về:

A   B   A   B   A   B
C   D   C   D   C   D

=a_REPT(A1:B2,3,1) → Trả về:

A   B
C   D
A   B
C   D
A   B
C   D

Ứng dụng: Hàm thích hợp để tạo dữ liệu kiểm thử, nhân bản mẫu dữ liệu, chuẩn bị bảng dữ liệu cho các phép tính mảng hoặc ghép nối nhiều bản sao của cùng một vùng dữ liệu trong các báo cáo.

Lưu ý: Hàm giữ nguyên cấu trúc và giá trị của vùng dữ liệu gốc trong mỗi lần lặp. Kích thước của mảng kết quả phụ thuộc vào số lần lặp và hướng lặp được chọn. Nếu Vertical bằng 1, số hàng sẽ tăng theo số lần lặp; nếu bằng 0, số cột sẽ tăng theo số lần lặp.


a_SPLITS

Chức năng: Hàm tách chuỗi văn bản hoặc dữ liệu trong một vùng thành nhiều phần dựa trên một hoặc nhiều ký tự phân tách. Hàm có thể trả kết quả theo cột hoặc theo hàng, đồng thời hỗ trợ loại bỏ các giá trị trùng lặp.

Cú pháp: =a_SPLITS(Range_, [Delimiter1], [Delimiter2], ..., ["/H"], ["/U"])

Trong đó:

  • Range_: Chuỗi văn bản hoặc vùng dữ liệu cần tách.
  • Delimiter1, Delimiter2, ...: Một hoặc nhiều ký tự hoặc chuỗi dùng để phân tách dữ liệu.
  • "/H" (tùy chọn): Trả kết quả theo hàng ngang. Nếu bỏ qua, kết quả được trả về theo cột dọc.
  • "/U" (tùy chọn): Chỉ trả về các giá trị duy nhất, loại bỏ các phần tử trùng lặp.

Ví dụ: =a_SPLITS("A,B,C",",") → Trả về:

A
B
C

=a_SPLITS("A,B,C",",","/H") → Trả về:

A   B   C

=a_SPLITS("Táo;Cam,Táo|Chuối",";",",","|","/U") → Trả về các giá trị duy nhất:

Táo
Cam
Chuối

Nếu vùng A1:A3 chứa:

Táo,Cam
Chuối;Xoài
Cam|Nho

thì:

=a_SPLITS(A1:A3,",",";","|") → Trả về toàn bộ các giá trị đã được tách thành từng phần riêng biệt.

Ứng dụng: Hàm hữu ích để tách danh sách được lưu trong một ô, xử lý dữ liệu được phân tách bằng nhiều ký tự khác nhau, chuẩn hóa dữ liệu nhập liệu và tạo danh sách phục vụ tra cứu, lọc hoặc phân tích.

Lưu ý: Hàm chấp nhận đồng thời nhiều ký tự phân tách trong cùng một công thức. Mặc định kết quả được trả về theo cột dọc; sử dụng tùy chọn "/H" để hiển thị theo hàng ngang. Khi sử dụng "/U", các giá trị trùng lặp sẽ được loại bỏ và mỗi giá trị chỉ xuất hiện một lần trong kết quả.


a_SplitSentence

Chức năng: Hàm chia một câu hoặc đoạn văn thành nhiều dòng sao cho độ dài của mỗi dòng không vượt quá giới hạn chỉ định. Việc tách được thực hiện theo từng từ, giúp giữ nguyên ý nghĩa và tránh cắt giữa chừng một từ.

Cú pháp:
=a_SplitSentence(Sentence, MaxLength)

Trong đó:

  • Sentence: Câu hoặc đoạn văn cần chia.
  • MaxLength: Số ký tự tối đa cho mỗi dòng.

Ví dụ:
=a_SplitSentence("Excel là công cụ mạnh mẽ để xử lý dữ liệu",15) → Trả về:

Excel là
công cụ mạnh
mẽ để xử lý
dữ liệu

=a_SplitSentence(A1,30) → Chia nội dung trong ô A1 thành nhiều dòng, mỗi dòng có tối đa 30 ký tự.

Ứng dụng: Hàm hữu ích khi cần chia nội dung dài để hiển thị trên nhãn in, báo cáo, biểu đồ, slide trình chiếu hoặc các mẫu biểu có giới hạn số ký tự trên mỗi dòng. Ngoài ra, hàm còn hỗ trợ chuẩn bị dữ liệu trước khi xuất sang các hệ thống yêu cầu độ dài dòng cố định.

Lưu ý: Hàm chỉ tách tại khoảng trắng giữa các từ nên sẽ không cắt một từ thành hai phần. Nếu một từ riêng lẻ có độ dài lớn hơn MaxLength, từ đó vẫn sẽ được giữ nguyên trên một dòng và có thể vượt quá giới hạn ký tự đã chỉ định. Kết quả được trả về dưới dạng một mảng theo cột dọc.


a_WrapText

Chức năng: Hàm tự động ngắt dòng văn bản trong một vùng dữ liệu theo số ký tự tối đa trên mỗi dòng. Việc ngắt dòng được thực hiện tại khoảng trắng giữa các từ để đảm bảo nội dung dễ đọc và không cắt giữa chừng một từ.

Cú pháp: =a_WrapText(TextRange, MaxLen)

Trong đó:

  • TextRange: Ô hoặc vùng chứa văn bản cần ngắt dòng.
  • MaxLen: Số ký tự tối đa cho mỗi dòng.

Ví dụ: Nếu ô A2 chứa nội dung:

Excel là công cụ mạnh mẽ để xử lý dữ liệu và lập báo cáo.

=a_WrapText(A2,20) → Trả về:

Excel là công cụ
mạnh mẽ để xử lý
dữ liệu và lập
báo cáo.

Nếu vùng A2:A5 chứa nhiều đoạn văn bản thì:

=a_WrapText(A2:A5,30) → Trả về một cột kết quả, trong đó mỗi ô đã được ngắt thành nhiều dòng với độ dài tối đa khoảng 30 ký tự mỗi dòng.

Ứng dụng: Hàm hữu ích khi chuẩn bị nội dung cho báo cáo, nhãn in, biểu mẫu, bảng biểu hoặc các ô Excel có chiều rộng cố định. Hàm giúp hiển thị văn bản gọn gàng mà không cần ngắt dòng thủ công.

Lưu ý: Hàm chỉ ngắt dòng tại khoảng trắng giữa các từ nên không chia một từ thành nhiều phần. Kết quả chứa ký tự xuống dòng trong từng ô; để hiển thị đúng, nên bật chế độ Wrap Text của Excel. Nếu ô nguồn trống, hàm sẽ trả về chuỗi rỗng.


a_TrimRange

Chức năng: Loại bỏ các dòng hoặc cột trống (chỉ chứa giá trị rỗng hoặc 0) ở đầu và cuối của một vùng dữ liệu, sau đó trả về vùng dữ liệu đã được thu gọn. Hàm tự động quyết định cắt theo chiều dòng hoặc chiều cột tùy theo kích thước của vùng dữ liệu.

Cú pháp: =a_TrimRange(rng)

Trong đó: rng: Vùng dữ liệu cần loại bỏ các dòng hoặc cột rỗng ở hai đầu.

Ví dụ:

  • =a_TrimRange(A1:A20) → Trả về vùng từ dòng đầu tiên đến dòng cuối cùng có chứa dữ liệu khác rỗng và khác 0, loại bỏ các dòng trống hoặc chỉ có giá trị 0 ở đầu và cuối vùng.
  • =a_TrimRange(A1:Z3) → Nếu vùng dữ liệu có nhiều cột hơn số dòng, hàm sẽ loại bỏ các cột đầu và cuối chỉ chứa giá trị rỗng hoặc 0, sau đó trả về vùng dữ liệu đã được thu gọn.

Ứng dụng:
Hàm rất hữu ích khi xử lý dữ liệu có nhiều dòng hoặc cột đệm ở hai đầu, đặc biệt trước khi thực hiện tổng hợp, tra cứu, Pivot, xuất báo cáo hoặc truyền dữ liệu sang các hàm xử lý khác. Việc tự động loại bỏ phần dữ liệu không cần thiết giúp các phép tính chính xác hơn và giảm phạm vi xử lý.

Lưu ý:
Hàm chỉ loại bỏ các dòng hoặc cột ở đầu và cuối vùng dữ liệu; các dòng hoặc cột trống nằm bên trong vùng sẽ được giữ nguyên. Giá trị được xem là trống để loại bỏ bao gồm ô rỗng và ô có giá trị bằng 0. Nếu số dòng của vùng lớn hơn hoặc bằng số cột, hàm sẽ cắt theo dòng; ngược lại, hàm sẽ cắt theo cột.


 

a_Vtack

Chức năng: Ghép nhiều vùng dữ liệu hoặc mảng theo chiều dọc thành một mảng duy nhất. Hàm tự động căn chỉnh số cột giữa các vùng và bổ sung ô trống khi số cột của các vùng không đồng nhất.

Cú pháp: =a_VSTACK(Array1, [Array2], [Array3], ...)

Trong đó:

  • Array1: Vùng dữ liệu hoặc mảng đầu tiên.
  • Array2, Array3, ... (tùy chọn): Các vùng dữ liệu hoặc mảng cần ghép thêm theo chiều dọc.

Ví dụ:

  • =a_VSTACK(A2:C10,E2:G20) → Ghép hai vùng dữ liệu thành một mảng liên tục theo chiều dọc.
  • =a_VSTACK(A2:B5,D2:F8) → Ghép hai vùng có số cột khác nhau. Kết quả sẽ có số cột bằng vùng có nhiều cột nhất và các ô thiếu dữ liệu sẽ được để trống.
  • =a_VSTACK(A2:A5,C2:E10,H2:H8) → Ghép đồng thời ba vùng dữ liệu có kích thước khác nhau thành một mảng duy nhất.

Ứng dụng: Hàm rất hữu ích khi cần hợp nhất dữ liệu từ nhiều bảng, nhiều vùng hoặc nhiều nguồn thành một danh sách duy nhất để phân tích, lập báo cáo, tạo PivotTable hoặc làm đầu vào cho các hàm xử lý khác. Đây là giải pháp thuận tiện để thay thế thao tác sao chép và dán nhiều lần.

Lưu ý: Hàm chấp nhận cả vùng dữ liệu, mảng độnggiá trị đơn lẻ làm tham số đầu vào. Kết quả luôn được ghép theo chiều dọc, giữ nguyên thứ tự các vùng được truyền vào. Nếu các vùng có số cột khác nhau, hàm sẽ tự động mở rộng kết quả theo số cột lớn nhất và điền ô trống cho các cột còn thiếu của từng vùng. Hàm không tự động loại bỏ tiêu đề hoặc các dòng dữ liệu trùng lặp; mọi dữ liệu đầu vào đều được đưa vào kết quả theo đúng thứ tự.

So sánh a_VSTACK và VSTACK của Excel

Cả a_VSTACKVSTACK đều có chức năng ghép nhiều vùng dữ liệu hoặc mảng theo chiều dọc để tạo thành một mảng kết quả duy nhất. Tuy nhiên, a_VSTACK được thiết kế để tương thích với nhiều phiên bản Excel và có khả năng xử lý linh hoạt hơn đối với các kiểu dữ liệu đầu vào.

Tiêu chí a_VSTACK VSTACK (Excel 365)
Ghép nhiều vùng theo chiều dọc
Hỗ trợ nhiều tham số
Hỗ trợ vùng dữ liệu (Range)
Hỗ trợ mảng
Hỗ trợ giá trị đơn lẻ
Tự mở rộng số cột
Điền giá trị khi thiếu cột Ô trống ("") Lỗi #N/A
Có trên Excel 2021 ✔ (qua VBA)
Có trên Excel 365, 2024

a_HStack

Chức năng: Ghép nhiều vùng dữ liệu hoặc mảng theo chiều ngang thành một mảng duy nhất. Hàm tự động căn chỉnh số dòng giữa các vùng và bổ sung ô trống khi số dòng của các vùng không đồng nhất.

Cú pháp: =a_HSTACK(Array1, [Array2], [Array3], ...)

Trong đó:

  • Array1: Vùng dữ liệu hoặc mảng đầu tiên.
  • Array2, Array3, ... (tùy chọn): Các vùng dữ liệu hoặc mảng cần ghép thêm theo chiều ngang.

Ví dụ:

  • =a_HSTACK(A2:B10,D2:E10) → Ghép hai vùng dữ liệu thành một mảng theo chiều ngang.
  • =a_HSTACK(A2:B5,D2:F10) → Ghép hai vùng có số dòng khác nhau. Kết quả sẽ có số dòng bằng vùng có nhiều dòng nhất và các ô thiếu dữ liệu sẽ được để trống.
  • =a_HSTACK(A2:A10,C2:D8,F2:H12) → Ghép đồng thời ba vùng dữ liệu thành một bảng duy nhất theo chiều ngang.

Ứng dụng: Hữu ích khi cần kết hợp nhiều bảng hoặc nhiều mảng thành một bảng tổng hợp theo chiều ngang để lập báo cáo, chuẩn bị dữ liệu phân tích hoặc làm đầu vào cho các hàm xử lý khác. Đây là giải pháp thuận tiện thay thế việc sao chép và ghép thủ công nhiều vùng dữ liệu.

Lưu ý: Hàm chấp nhận cả vùng dữ liệu, mảng độngmảng làm tham số đầu vào. Kết quả luôn được ghép theo chiều ngang, giữ nguyên thứ tự các vùng được truyền vào. Nếu các vùng có số dòng khác nhau, hàm sẽ tự động mở rộng kết quả theo số dòng lớn nhất và điền ô trống cho các dòng còn thiếu của từng vùng. Hàm không tự động loại bỏ tiêu đề hoặc dữ liệu trùng lặp.


So sánh a_HSTACK và HSTACK của Excel

Cả a_HSTACKHSTACK đều có chức năng ghép nhiều vùng dữ liệu theo chiều ngang. Tuy nhiên, a_HSTACK được xây dựng để tương thích với nhiều phiên bản Excel và xử lý khác với hàm HSTACK của Microsoft 365 ở các vùng có kích thước không đồng đều.

Tiêu chí a_HSTACK HSTACK (Excel 365)
Ghép nhiều vùng theo chiều ngang
Hỗ trợ nhiều tham số
Hỗ trợ vùng dữ liệu (Range)
Hỗ trợ mảng
Tự mở rộng số dòng
Điền giá trị khi thiếu dòng Ô trống ("") Lỗi #N/A
Có trên Excel 2021 ✔ (qua VBA)
Có trên Excel 365, 2024

Điểm khác biệt nổi bật

1. Giá trị điền cho dòng thiếu

Ví dụ:

A1:B2
1   A
2   B

D1:E4
3   C
4   D
5   E
6   F
  • =HSTACK(A1:B2,D1:E4)

Kết quả:

1   A   3   C
2   B   4   D
#N/A #N/A 5   E
#N/A #N/A 6   F
  • =a_HSTACK(A1:B2,D1:E4)

Kết quả:

1   A   3   C
2   B   4   D
        5   E
        6   F

Các ô không có dữ liệu sẽ được để trống, không phát sinh lỗi #N/A.

Khi nào nên dùng?

Dùng HSTACK của Excel khi:

  • Sử dụng Microsoft 365.
  • Muốn tận dụng các hàm mảng động tích hợp sẵn.
  • Có thể chấp nhận hoặc xử lý các giá trị #N/A bằng IFNA() hoặc IFERROR().

Dùng a_HSTACK khi:

  • Cần tương thích với các phiên bản Excel 2021
  • Muốn kết quả không xuất hiện lỗi #N/A khi các vùng có số dòng khác nhau.
  • Thường xuyên ghép dữ liệu có kích thước không đồng nhất và muốn bảng kết quả sạch, không cần xử lý lỗi bổ sung.

TableUnion

Chức năng:
Ghép nhiều bảng dữ liệu có cùng cấu trúc hoặc khác thứ tự cột thành một bảng duy nhất. Hàm tự động căn chỉnh dữ liệu theo tên cột, giúp kết hợp dữ liệu chính xác ngay cả khi các bảng có thứ tự cột khác nhau hoặc thiếu một số cột.

Cú pháp:
=TableUnion(Table1, [Table2], [Table3], …)

Trong đó:

  • Table1: Bảng dữ liệu đầu tiên, đồng thời là bảng xác định danh sách và thứ tự các cột của kết quả.
  • Table2, Table3, … (tùy chọn): Các bảng dữ liệu cần ghép thêm.

Ví dụ:

  • =TableUnion(A1:D100,F1:I80) → Ghép hai bảng dữ liệu thành một bảng duy nhất. Nếu các cột của bảng thứ hai được sắp xếp khác thứ tự bảng thứ nhất, hàm vẫn tự động đưa dữ liệu vào đúng cột theo tên tiêu đề.
  • =TableUnion(TableA,TableB,TableC) → Kết hợp ba bảng dữ liệu có cùng tên cột thành một bảng tổng hợp.
  • Nếu bảng thứ hai không có cột Email nhưng bảng đầu tiên có cột này, các dòng được ghép từ bảng thứ hai sẽ để trống cột Email trong kết quả.

Ứng dụng:
Hàm đặc biệt hữu ích khi tổng hợp dữ liệu từ nhiều báo cáo, nhiều chi nhánh, nhiều file hoặc nhiều nguồn khác nhau thành một bảng thống nhất. Đây là giải pháp hiệu quả để hợp nhất dữ liệu trước khi phân tích, lập PivotTable, tạo Dashboard hoặc thực hiện các phép tính thống kê.

Lưu ý:
Hàng đầu tiên của mỗi bảng được xem là tiêu đề cột và không được ghép vào dữ liệu. Cấu trúc của bảng kết quả luôn theo tiêu đề của bảng đầu tiên. Các cột trong những bảng tiếp theo sẽ được tự động ghép theo tên tiêu đề, không phụ thuộc vào vị trí cột. Nếu một bảng không có cột tương ứng thì các ô của cột đó sẽ được để trống. Hàm không kiểm tra hoặc loại bỏ các dòng dữ liệu trùng lặp; mọi dòng dữ liệu trong các bảng đầu vào đều được đưa vào kết quả.


RowVisible

Chức năng: Lấy dữ liệu từ các hàng đang hiển thị (không bị ẩn hoặc lọc) trong một vùng dữ liệu. Hàm có thể trả về mảng hai chiều hoặc ghép toàn bộ kết quả thành một chuỗi, đồng thời hỗ trợ loại bỏ các giá trị trùng lặp.

Cú pháp: =RowVisible(colRange, [SplitChar], [UniqueRow])

Trong đó:

  • colRange: Vùng dữ liệu cần lấy các giá trị từ những hàng đang hiển thị.
  • SplitChar (tùy chọn): Ký tự dùng để nối các giá trị thành một chuỗi. Nếu bỏ qua hoặc để rỗng, hàm sẽ trả về mảng dữ liệu.
  • UniqueRow (tùy chọn, mặc định = FALSE): Nếu bằng TRUE, chỉ giữ lại các giá trị duy nhất; nếu FALSE, giữ nguyên tất cả các giá trị theo thứ tự xuất hiện.

Ví dụ:

  • =RowVisible(A2:A100) → Trả về danh sách các giá trị trong cột A thuộc các hàng đang hiển thị sau khi lọc dữ liệu.
  • =RowVisible(A2:A100,", ") → Ghép các giá trị của các hàng đang hiển thị thành một chuỗi, mỗi giá trị cách nhau bằng dấu phẩy và khoảng trắng.
  • =RowVisible(A2:A100,", ",TRUE) → Trả về chuỗi chỉ gồm các giá trị duy nhất của những hàng đang hiển thị.
  • =RowVisible(A2:C100) → Trả về mảng gồm 3 cột, chỉ chứa dữ liệu của các hàng đang hiển thị.

Ứng dụng: Hàm rất hữu ích khi làm việc với dữ liệu đã lọc bằng AutoFilter hoặc ẩn hàng thủ công. Có thể dùng để trích xuất danh sách khách hàng, mã hàng, sản phẩm hoặc bất kỳ dữ liệu nào từ các hàng đang hiển thị, phục vụ báo cáo, tạo danh sách chọn, tổng hợp dữ liệu hoặc truyền kết quả sang các hàm khác.

Lưu ý: Hàm chỉ lấy dữ liệu của các hàng đang hiển thị, bỏ qua toàn bộ các hàng bị ẩn. Khi SplitChar được chỉ định, kết quả trả về là một chuỗi văn bản; nếu không, kết quả là một mảng động có cùng số cột với vùng dữ liệu đầu vào. Khi UniqueRow=TRUE, các giá trị trùng lặp sẽ bị loại bỏ dựa trên nội dung ô và chỉ giữ lại lần xuất hiện đầu tiên. Thứ tự các giá trị trong kết quả luôn theo thứ tự từ trên xuống dưới của vùng dữ liệu gốc.

×