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àm | Input "Đườ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-majorKhác TEXTJOIN:
- Hỗ trợ 2D range (TEXTJOIN cũng có nhưng kém linh hoạt).
- Tự handle
null/errorcell. - 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}") → FALSEDvdRegexReplace
=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") → 3525DvdReverseText
Đả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àm | Free | Activated/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
- UDF Date + Money + Math — DvdNumToText, DvdWorkdays, DvdToLunar.
- UDF Range + Lookup — DvdSumVisible, DvdVLookupAll.
- Smart Case — ribbon equivalent của DvdUpper/Lower/Proper.