Skip to content

UDF Văn bản (Text Functions)

Hàm Excel tùy chỉnh cho xử lý text — chữ hoa/thường có dấu, bỏ dấu, regex, đảo chuỗi, Roman number.

DvdUpper / DvdLower / DvdProper

Chuyển case có hỗ trợ đầy đủ tiếng Việt có dấu (khác hàm UPPER / LOWER / PROPER built-in có lỗi với một số dấu).

=DvdUpper("hà nội")       → "HÀ NỘI"
=DvdLower("HÀ NỘI")       → "hà nội"
=DvdProper("hà nội")      → "Hà Nội"

So sánh với built-in:

HàmInput "Đường lê duẩn"Output đúng?
=UPPER(A1)ĐƯỜNG LÊ DUẨN✓ Đúng (tùy version Excel)
=PROPER(A1)Đường Lê DuẩN✗ Lỗi DuẩN
=DvdUpper(A1)ĐƯỜNG LÊ DUẨN
=DvdProper(A1)Đường Lê Duẩn

DvdRemoveDiacritics

Bỏ dấu tiếng Việt — convert "Hà Nội" → "Ha Noi":

=DvdRemoveDiacritics("Phở bò Hà Nội")   → "Pho bo Ha Noi"
=DvdRemoveDiacritics("Đặng Văn Đằng")   → "Dang Van Dang"

Use case:

  • Đặt tên file/folder không có dấu (compatible với system cũ).
  • Tạo URL slug (vd: "/du-an-mhc-van-phong").
  • Tìm kiếm fuzzy (so sánh sau khi bỏ dấu).

DvdJoin

Nối các cell trong range bằng separator — cải tiến TEXTJOIN:

=DvdJoin(A1:A10, ", ")                  → "Hà Nội, TP.HCM, Đà Nẵng, ..."
=DvdJoin(A1:A10, " - ", TRUE)           → bỏ qua cell trống
=DvdJoin(A1:C5, " / ")                  → nối 2D range theo thứ tự row-major

Khác TEXTJOIN:

  • Hỗ trợ 2D range (TEXTJOIN cũng có nhưng kém linh hoạt).
  • Tự handle null / error cell.
  • Nhanh hơn ~3x với range > 10,000 cells.

DvdRegexMatch / DvdRegexReplace / DvdRegexExtract

Pattern matching với regex .NET.

DvdRegexMatch

=DvdRegexMatch("Phone: 0901234567", "\d{10}")   → TRUE
=DvdRegexMatch("Phone: xxx", "\d{10}")          → FALSE

DvdRegexReplace

=DvdRegexReplace("abc123def456", "\d+", "#")    → "abc#def#"
=DvdRegexReplace("Phone 0901-234-567", "[-\s]", "") → "Phone0901234567"

DvdRegexExtract

Trích substring đầu tiên match pattern:

=DvdRegexExtract("Order ID: ORD-2026-00123", "ORD-\d{4}-\d{5}") → "ORD-2026-00123"
=DvdRegexExtract("Email: dang@dvdpm.net", "[\w.]+@[\w.]+")       → "dang@dvdpm.net"

Phù hợp cho: parse log, extract pattern từ text dài.

DvdExtractNumbers

Trích tất cả số từ text:

=DvdExtractNumbers("Phòng 405, tầng 4, 12 m²")  → "405, 4, 12"  (text với , separator)
=DvdExtractNumbers("Giá: 1.234.567 đ")           → "1234567"     (concat all digits)

Tham số thêm:

  • mode="sum" → tổng tất cả số tìm được.
  • mode="first" → chỉ số đầu tiên.
  • mode="last" → số cuối cùng.
=DvdExtractNumbers("Năm 2025, doanh thu 1500", "sum") → 3525

DvdReverseText

Đảo ngược chuỗi:

=DvdReverseText("Hello")  → "olleH"
=DvdReverseText("Hà Nội") → "iộN àH"

Use case: ít dùng — chủ yếu để debug encoding hoặc tạo wordplay.

DvdRomanToArabic / DvdArabicToRoman

Roman ↔ Arabic numeral conversion:

=DvdRomanToArabic("MMXXVI")  → 2026
=DvdRomanToArabic("CXLVII")  → 147

=DvdArabicToRoman(2026)      → "MMXXVI"
=DvdArabicToRoman(147)       → "CXLVII"

Hỗ trợ số 1-3999 (giới hạn Roman numeral chuẩn).

Use case: đánh STT mục bằng Roman (I., II., III., ...) trong outline.

DvdRandomText / DvdRandomVietnameseName

Sinh text ngẫu nhiên cho testing:

=DvdRandomText(20)                  → "Lorem ipsum dolor si"  (20 chars)
=DvdRandomText(50, "vi")            → 50 chars text tiếng Việt giả
=DvdRandomVietnameseName()          → "Nguyễn Văn An"
=DvdRandomVietnameseName("female")  → "Trần Thị Hoa"

Use case: fill bảng test, demo data, sample workbook.

License gating

HàmFreeActivated/Trial
Tất cả hàm text (Upper/Lower/Diacritics/Regex/Roman/Random)

Performance tips

Hàm UDF chạy chậm hơn formula built-in ~3-5x vì gọi qua COM bridge. Với bảng > 10,000 cells:

  • Tránh dùng UDF trong cell trực tiếp.
  • Thay vì vậy: chạy lệnh ribbon (vd: Smart Case) để apply ở chỗ — output value cứng.

Liên quan

Released under DVDAddin License.