Skip to content

Hàm văn bản

Nhóm này gồm 14 hàm làm việc với chuỗi: nối giá trị của một vùng (có hoặc không có điều kiện), tách và trích phần tử trong chuỗi, đếm từ / đếm lần xuất hiện, xử lý Tiếng Việt (bỏ dấu, VNI/Telex, chuỗi Unicode cho VBA) và tính nhanh biểu thức khối lượng viết trong ô diễn giải.

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
dvdConcatIFNối các giá trị của một vùng, có hoặc không kèm điều kiện.
dvdConcatIFSNối các giá trị của một vùng khi thỏa nhiều điều kiện.
dvdJoinIFGộp giá trị theo một điều kiện, có tùy chọn bỏ trùng.
dvdJoinIFSGộp giá trị theo nhiều cặp vùng/điều kiện.
dvdTextJoinNối nhiều chuỗi hoặc vùng bằng một dấu phân cách.
dvdTextSplitItemLấy phần tử thứ n sau khi tách chuỗi theo dấu phân cách.
dvdExtractElementTrích phần tử thứ n của chuỗi, giữ nguyên phần tử rỗng.
dvdCountOccurrencesĐếm số lần một chuỗi con xuất hiện trong chuỗi chính.
dvdWordCountĐếm số từ của một chuỗi.
dvdUnDiacriticsViBỏ dấu Tiếng Việt.
dvdUniConvertChuyển văn bản gõ kiểu VNI hoặc Telex sang Unicode.
dvdUniVbaChuyển chuỗi Tiếng Việt thành biểu thức chuỗi dùng trong VBA.
dvdSymbolChèn ký hiệu ô đánh dấu (trống / tick / gạch chéo).
dvdEvaluateTính biểu thức toán học viết sau dấu hai chấm trong một chuỗi.

dvdConcatIF

Nối các giá trị của một vùng thành một chuỗi; nếu khai báo thêm vùng điều kiện thì chỉ nối những dòng thỏa điều kiện.

Cú pháp:

=dvdConcatIF(Delimiter; ConcatRange; [ConditionRange]; [Condition])
Tham sốBắt buộcMô tả
DelimiterKý tự phân cách giữa các giá trị được nối.
ConcatRangePhạm vi các ô cần nối giá trị.
ConditionRangeKhôngPhạm vi chứa giá trị dùng để so với điều kiện.
ConditionKhôngGiá trị điều kiện, chấp nhận toán tử (">5", ">=2", "<>0") và ký tự đại diện ("BT*").

Ví dụ:

=dvdConcatIF(", "; C6:C40; B6:B40; "Móng")
// → "Bê tông lót M100, Bê tông móng M300, Cốt thép móng"

=dvdConcatIF(" + "; C6:C40)
// → nối toàn bộ tên công tác có nội dung trong C6:C40

Lưu ý

  • ConditionRangeCondition phải khai báo cùng nhau; thiếu một trong hai thì hàm nối toàn bộ vùng.
  • Khi không có điều kiện, các ô trống được bỏ qua.

dvdConcatIFS

Nối các giá trị của một vùng khi thỏa đồng thời nhiều điều kiện, mỗi điều kiện là một cặp vùng và tiêu chí.

Cú pháp:

=dvdConcatIFS(Delimiter; ConcatRange; Conditions…)
Tham sốBắt buộcMô tả
DelimiterKý tự phân cách giữa các giá trị được nối.
ConcatRangePhạm vi các ô cần nối giá trị.
ConditionsCác cặp Vùng / Điều kiện, khai báo lần lượt và lặp lại bao nhiêu cặp tùy nhu cầu.

Ví dụ:

=dvdConcatIFS(", "; C6:C60; B6:B60; "Móng"; E6:E60; ">0")
// → "Bê tông móng M300, Cốt thép móng" (hạng mục Móng và có khối lượng)

Lưu ý

  • Điều kiện dùng cùng cú pháp với dvdConcatIF: toán tử so sánh hoặc ký tự đại diện.
  • Các vùng điều kiện nên có cùng số ô với ConcatRange; dòng nào vượt quá số ô của vùng điều kiện sẽ bị loại.

dvdJoinIF

Gộp các giá trị của một vùng khi cột điều kiện khớp đúng với giá trị cho trước, có thể bỏ trùng và ghi kèm tên điều kiện ở đầu kết quả.

Cú pháp:

=dvdJoinIF(CriteriaRange; Condition; ConcatenateRange; [Separator]; [RemoveDuplicate]; [ShowCondition])
Tham sốBắt buộcMô tả
CriteriaRangePhạm vi chứa các điều kiện để lọc dữ liệu.
ConditionĐiều kiện để lọc.
ConcatenateRangePhạm vi giá trị cần gộp.
SeparatorKhôngDấu phân tách, mặc định ", ".
RemoveDuplicateKhôngTRUE để bỏ giá trị trùng, mặc định FALSE.
ShowConditionKhôngTRUE để thêm điều kiện và dấu hai chấm trước kết quả.

Ví dụ:

=dvdJoinIF(B6:B60; "Tầng 3"; C6:C60; " + "; TRUE; TRUE)
// → "Tầng 3: Cột C1 + Dầm D2 + Sàn S1"

=dvdJoinIF(D6:D60; "Đạt"; A6:A60)
// → "BB-01, BB-04, BB-07" (số biên bản nghiệm thu đã đạt)

Lưu ý

  • Hàm so khớp chính xác (không dùng toán tử hay ký tự đại diện); cần lọc theo ">5" hay "BT*" thì dùng dvdConcatIF.
  • CriteriaRangeConcatenateRange phải có cùng số ô, nếu lệch nhau hàm trả về #REF!.

dvdJoinIFS

Gộp các giá trị của một vùng khi thỏa đồng thời nhiều cặp vùng/điều kiện.

Cú pháp:

=dvdJoinIFS(Separator; RemoveDuplicate; ConcatenateRange; Pairs…)
Tham sốBắt buộcMô tả
SeparatorKý tự phân tách; để trống thì dùng ", ".
RemoveDuplicateTRUE để loại bỏ giá trị trùng.
ConcatenateRangePhạm vi cần gộp.
PairsCác cặp Vùng / Điều kiện, khai báo lần lượt và lặp lại bao nhiêu cặp tùy nhu cầu.

Ví dụ:

=dvdJoinIFS(" + "; TRUE; C6:C60; B6:B60; "Tầng 3"; E6:E60; ">0")
// → "Cột C1 + Dầm D2 + Sàn S1"

Lưu ý

  • Số tham số trong Pairs phải chẵn và mọi vùng điều kiện phải cùng số ô với ConcatenateRange, nếu không hàm trả về #REF!.
  • Điều kiện chấp nhận toán tử so sánh và ký tự đại diện như dvdConcatIF.

dvdTextJoin

Nối nhiều giá trị hoặc nhiều vùng bằng một dấu phân cách, có tùy chọn bỏ qua ô trống.

Cú pháp:

=dvdTextJoin(Delimiter; IgnoreEmpty; Text…)
Tham sốBắt buộcMô tả
DelimiterDấu phân cách giữa các chuỗi văn bản.
IgnoreEmptyTRUE để bỏ qua các giá trị trống.
TextCác giá trị hoặc phạm vi cần nối, khai báo được nhiều tham số.

Ví dụ:

=dvdTextJoin("; "; TRUE; B6:B12; "Phát sinh ngoài hợp đồng")
// → "Cột C1; Dầm D2; Sàn S1; Phát sinh ngoài hợp đồng"

dvdTextSplitItem

Tách chuỗi theo dấu phân cách rồi lấy phần tử ở vị trí chỉ định.

Cú pháp:

=dvdTextSplitItem(InputText; Delimiter; Index; [IgnoreEmpty])
Tham sốBắt buộcMô tả
InputTextChuỗi gốc cần tách.
DelimiterKý tự hoặc chuỗi phân tách.
IndexVị trí phần tử, tính từ 1.
IgnoreEmptyKhôngTRUE để bỏ qua phần tử rỗng, mặc định TRUE.

Ví dụ:

=dvdTextSplitItem("MB-T3-D1"; "-"; 2)
// → "T3"

=dvdTextSplitItem(A6; "/"; 3)
// → "Móng M1" (từ mã công tác "HM01/BT/Móng M1")

Lưu ý

  • Vị trí vượt quá số phần tử sẽ trả về chuỗi rỗng, không báo lỗi.

dvdExtractElement

Trích phần tử thứ n của một chuỗi theo dấu phân tách, giữ nguyên cả những phần tử rỗng.

Cú pháp:

=dvdExtractElement(InputString; ElementNumber; Separator)
Tham sốBắt buộcMô tả
InputStringChuỗi cần trích xuất phần tử.
ElementNumberSố thứ tự của phần tử cần trích xuất, tính từ 1.
SeparatorKý tự hoặc chuỗi phân tách.

Ví dụ:

=dvdExtractElement("Bê tông/M300/Móng M1"; 2; "/")
// → "M300"

=dvdExtractElement(B6; 1; ",")
// → "Cột C1" (lấy hạng mục đầu tiên trong danh sách của ô B6)

Lưu ý

  • Khác với dvdTextSplitItem, hàm này đếm cả phần tử rỗng, nên "A//B" có phần tử thứ 2 là chuỗi rỗng.

dvdCountOccurrences

Đếm số lần một chuỗi con xuất hiện trong chuỗi chính.

Cú pháp:

=dvdCountOccurrences(MainText; SubText)
Tham sốBắt buộcMô tả
MainTextChuỗi văn bản trong đó cần đếm.
SubTextChuỗi văn bản cần đếm số lần xuất hiện.

Ví dụ:

=dvdCountOccurrences("Tầng 1;Tầng 2;Tầng 3"; ";") + 1
// → 3 (số hạng mục trong danh sách phân cách bằng dấu chấm phẩy)

=dvdCountOccurrences(C6; "D")
// → 4 (số thanh thép ký hiệu D trong ghi chú cấu kiện)

Lưu ý

  • Hàm phân biệt chữ hoa và chữ thường.

dvdWordCount

Đếm số từ của một chuỗi văn bản.

Cú pháp:

=dvdWordCount(Text)
Tham sốBắt buộcMô tả
TextChuỗi văn bản cần đếm số từ.

Ví dụ:

=dvdWordCount("Bê tông lót móng M1")
// → 5

dvdUnDiacriticsVi

Bỏ dấu Tiếng Việt của một chuỗi, giữ nguyên các ký tự khác.

Cú pháp:

=dvdUnDiacriticsVi(sContent)
Tham sốBắt buộcMô tả
sContentChuỗi Unicode Tiếng Việt cần bỏ dấu.

Ví dụ:

=dvdUnDiacriticsVi("Bê tông cốt thép")
// → "Be tong cot thep"

=dvdUnDiacriticsVi(A6)
// → "Bien ban nghiem thu Mong M1" (dùng đặt tên file hồ sơ)

dvdUniConvert

Chuyển văn bản gõ theo kiểu VNI hoặc Telex sang Tiếng Việt Unicode.

Cú pháp:

=dvdUniConvert(Text; InputMethod)
Tham sốBắt buộcMô tả
TextVăn bản cần chuyển đổi.
InputMethodKiểu gõ của văn bản đầu vào: "VNI" hoặc "Telex".

Ví dụ:

=dvdUniConvert("Be6 to6ng"; "VNI")
// → "Bê tông"

=dvdUniConvert("Bee toong"; "Telex")
// → "Bê tông"

Lưu ý

  • InputMethod chỉ nhận "VNI" hoặc "Telex"; giá trị khác thì hàm trả nguyên văn bản gốc.

dvdUniVba

Chuyển chuỗi Tiếng Việt thành biểu thức chuỗi dán được vào code VBA, các ký tự có dấu được viết thành ChrW(...).

Cú pháp:

=dvdUniVba(TxtUni)
Tham sốBắt buộcMô tả
TxtUniChuỗi Unicode Tiếng Việt cần chuyển.

Ví dụ:

=dvdUniVba("Nghiệm thu")
// → "Nghi" & ChrW(7879) & "m thu"

Lưu ý

  • Dùng khi viết macro VBA cho biểu mẫu hồ sơ: dán trực tiếp kết quả vào code để không bị lỗi font khi lưu file .bas.

dvdSymbol

Trả về ký hiệu ô đánh dấu để dùng trong biểu mẫu kiểm tra, nghiệm thu.

Cú pháp:

=dvdSymbol(value)
Tham sốBắt buộcMô tả
value1 = hộp trống, 2 = hộp có tick, 3 = hộp có dấu x.

Ví dụ:

=dvdSymbol(2)
// → ☑

=dvdSymbol(IF(D6="Đạt"; 2; 3))
// → ☑ khi kết quả kiểm tra là Đạt, ☒ khi không đạt

Lưu ý

  • Giá trị khác 1, 2, 3 trả về chuỗi rỗng.

dvdEvaluate

Tính biểu thức toán học viết sau dấu hai chấm trong một chuỗi diễn giải khối lượng.

Cú pháp:

=dvdEvaluate(InputString)
Tham sốBắt buộcMô tả
InputStringChuỗi đầu vào chứa biểu thức toán học nằm sau dấu hai chấm.

Ví dụ:

=dvdEvaluate("Móng M1: 2x3x0.8")
// → 4.8

=dvdEvaluate("Dầm D1: 5*0.3*0.5")
// → 0.75

Lưu ý

  • Phần chuỗi từ dấu = trở về sau bị bỏ qua, nên diễn giải dạng "Móng M1: 2x3x0.8 = 4.8" vẫn tính đúng.
  • Ký tự xX được hiểu là dấu nhân; khoảng trắng bị loại bỏ.
  • Biểu thức không hợp lệ hoặc kết quả bằng 0 sẽ trả về chuỗi rỗng.

Released under DVDAddin License.