Hướng Dẫn Cơ Bản Về Hàm String (chuỗi) Trong Vba
Có thể bạn quan tâm
Bài viết này Học Excel Online gửi tới các bạn bộ hướng dẫn cơ bản về hàm String VBA vốn được ứng dụng rất nhiều trong khởi tạo và quản lý các chuỗi. Chúng ta hãy bắt đầu ngay thôi!
Bảng hướng dẫn nhanh về các hàm xử lý chuỗi – String
String operations | Các hàm trong VBA (s) |
Nối hai hoặc nhiều chuỗi | Format hoặc “&” |
Xây dựng chuỗi từ mảng | Join |
So sánh – thông thường (Compare_ | StrComp or “=” |
So sánh chuổi theo mảng, theo pattern | Like |
Chuyển đổi kiểu dữ liệu sang kiểu chuỗi | CStr, Str |
Chuyển đổi kiểu dữ liệu thành kiểu date | Simple: CDate Advanced: Format |
Chuyển đổi kiểu dữ liệu thành kiểu số | Simple: CLng, CInt, CDbl, Val Advanced: Format |
Chuyển đổi unicode, wide, narrow | StrConv |
Chuyển đổi thành upper/lower case | StrConv, UCase, LCase |
Trích xuất dữ liệu từ chuỗi | Left, Right, Mid |
Định dạng chuỗi | Format |
Tìm kiếm các ký tự trong chuỗi | InStr, InStrRev |
Tạo chuỗi | String |
Độ dài của chuỗi | Len |
Xóa khoảng trống | LTrim, RTrim, Trim |
Thay thế một phần của chuỗi | Replace |
Đảo ngược chuỗi | StrReverse |
Phân tích cú pháp chuỗi thành mảng | Split |
Giới thiệu hàm String VBA
Sử dụng hàm String VBA. Có rất nhiều cách thao tác với String VBA
- Trích xuất một phần của String.
- So sánh các String.
- Chuyển đổi số thành String.
- Định dạng ngày bao gồm ngày trong tuần.
- Tìm một ký tự trong String.
- Loại bỏ khoảng trống .
- Phân tích cú pháp thành một mảng.
VBA có rất nhiều cách để thực hiện các tác vụ trên một cách dễ dàng. Bài viết dưới đây sẽ cung cấp hướng dẫn về cách sử dụng chuỗi trong VBA.
Lưu ý quan trọng
Khi xử lý hàm String VBA cần lưu ý 2 điểm quan trọng sau:
Chuỗi gốc không được thay đổi
Một điểm quan trọng là không được thay đổi chuỗi gốc trong VBA, nếu muốn thay đổi chuỗi ban đầu chúng ta chỉ cần gán kết quả cho chuỗi ban đầu.
Cách sử dụng tham số so sánh (Compare)
Một số hàm như StrComp () và Guide… có tham số Option Compare và hoạt động như sau:
vbTextCompare : Chữ hoa và chữ thường được coi là giống nhau
vbBinaryCompare : Chữ hoa và chữ thường được coi là khác nhau
Đoạn mã sau sử dụng hàm so sánh chuỗi StrComp () để chứng minh tham số Compare:
Bạn có thể sử dụng Option Compare thay vì phải sử dụng compare nhiều lần như trên. Tùy chọn Option Compare đặt ở đầu Mô-đun. Bất kỳ hàm nào sử dụng tham số Compare sẽ lấy cài đặt này làm mặc định. Hai cách để sử dụng Option Compare là:1. Option Compare Text: làm cho vbTextCompare trở thành đối số Compare mặc định.
2. Option Compare Binary: Tạo vbBinaryCompare đối số Compare mặc định
Nếu Option Compare không được sử dụng thì mặc định là Option Compare Binary.
Nối các chuỗi sử dụng String VBA
Sử dụng toán tử “&” để nối các chuỗi, ví dụ:
Trong ví dụ các dữ liệu không cùng loại như date và số được tự động chuyển đổi thành chuỗi. Toán tử “+” cũng được sử dụng để nối các chuỗi, sự khác biệt là nó chỉ làm việc với chuỗi cùng kiểu dữ liệu, nếu sử dụng khác kiểu sẽ xuất hiện lỗi:
Trích xuất dữ liệu từ một chuỗi với String VBA
Các hàm được đề cập trong mục dưới đây rất hữu ích khi xử lý trích xuất dữ liệu từ một chuỗi.
Hàm | Tham số | Mô tả | Ví dụ |
Left | string, length | Trả về ký tự từ phía bên trái | Left(“John Smith”,4) |
Right | string, length | Trả về lý tự từ phía bên phải | Right(“John Smith”,5) |
Mid | string, start, length | Trả về ký tự từ giữa | Mid(“John Smith”,3,2) |
Các hàm Left , Right và Mid được sử dụng để trích xuất các phần của một chuỗi, những hàm này sử dụng khá đơn giản. Left đọc các ký tự từ bên trái, Right đọc ký tự từ bên phải và Mid từ điểm bắt đầu mà bạn chỉ định.
Như đã đề cập, không được thay đổi chuỗi gốc trong VBA, thay vào đó sẽ trả dưới dạng một chuỗi mới.
Trong ví dụ dưới có thể thấy rằng chuỗi Fullname không bị thay đổi khi sử dụng hàm Left:
Nếu bạn muốn thay đổi chuỗi ban đầu, bạn chỉ cần gán nó vào giá trị trả về của hàm:
Tìm kiếm trong một chuỗi với String VBA
Hàm | Tham số | Mô tả | Ví dụ |
InStr | String1, String2 | Tìm vị trí của chuỗi | InStr (“John Smith”, “h”) |
InStrRev | StringCheck, StringMatch | Tìm vị trí của chuỗi từ cuối | InStrRev (“John Smith”, “h”) |
InStr và InStrRev là các hàm VBA được sử dụng để tìm kiếm các chuỗi cho một chuỗi con. Nếu chuỗi tìm kiếm được tìm thấy thì vị trí (từ đầu chuỗi kiểm tra) của chuỗi tìm kiếm được trả về. Nếu chuỗi tìm kiếm không được tìm thấy thì trả về số không. Nếu một trong hai chuỗi là null thì trả về null (Vô giá trị).
Mô tả các tham số Instr
InStr() Start[Optional], String1, String2, Compare[Optional]
- Start As Long [Tùy chọn – Mặc định là 1]: Đây là một số chỉ định vị trí tìm kiếm bắt đầu từ bên trái
- String1 As String: Chuỗi tìm kiếm
- String2 As String: Chuỗi cần tìm kiếm
- Compare as vbCompareMethod: Tham số tùy chọn. Chỉ định so sánh chuỗi được sử dụng.
Ví dụ về Instr
InStr trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Sau đây là một số ví dụ về việc sử dụng:
InStrRev Mô tả các tham số
InStrRev() StringCheck, StringMatch, Start[Optional], Compare[Optional]
- StringCheck As String: Chuỗi tìm kiếm
- StringMatch : Chuỗi cần tìm kiếm
- Start As Long [Tùy chọn – Mặc định là -1]: Đây là một số chỉ định vị trí tìm kiếm bắt đầu từ bên phải
- Compare As vbCompareMethod:Tham số tùy chọn. Chỉ định so sánh chuỗi được sử dụng.
Sử dụng InStr và các ví dụ
Hàm InStrRev giống như InStr ngoại trừ việc nó tìm kiếm từ cuối chuỗi. Điều quan trọng cần lưu ý là vị trí trả về là vị trí ngay từ đầu.
Ví dụ:
Các hàm InStr và InStrRev rất hữu ích khi xử lý các tìm kiếm chuỗi cơ bản. Tuy nhiên, nếu sử dụng chúng để trích xuất văn bản từ một chuỗi sẽ phức tạp hơn.
Loại bỏ khoảng trống
Hàm | Tham số | Mô tả | Thí dụ |
LTrim | String | Xóa khoảng trắng từ bên trái | LTrim (“John”) |
RTrim | String | Xóa khoảng trắng từ bên phải | RTrim (“John”) |
Xén | String | Loại bỏ các dấu cách từ trái và phải | Trim (“John”) |
Các hàm Trim là các hàm đơn giản loại bỏ các khoảng trắng khỏi đầu hoặc cuối của một chuỗi.
Sử dụng các hàm Trim và các ví dụ
- LTrim loại bỏ khoảng trắng từ bên trái của một chuỗi
- RTrim loại bỏ khoảng trắng từ bên phải của một chuỗi
- Trim loại bỏ khoảng trắng từ bên trái và bên phải của một chuỗi
Chiều dài của chuỗi
Hàm | Tham số | Mô tả | Ví dụ |
Len | chuỗi | Trả về độ dài của chuỗi | Len (“John Smith”) |
Len là một hàm đơn giản khi được sử dụng với một chuỗi, len trả về số ký tự mà chuỗi chứa. Nếu được sử dụng với kiểu Long, nó sẽ trả về số byte.
Đảo ngược chuỗi với String VBA
Hàm | Tham số | Mô tả | Ví dụ |
StrReverse | String | Đảo ngược một chuỗi | StrReverse (“John Smith”) |
StrReverse là một chức năng dễ sử dụng khác, trả về chuỗi đã cho với các ký tự được đảo ngược.
So sánh các chuỗi
Hàm | Tham số | Mô tả | Ví dụ |
StrComp | string1, string2 | So sánh 2 chuỗi | StrComp (“John”, “John”) |
Hàm StrComp được sử dụng để so sánh hai chuỗi.
Các tham số
StrComp() String1, String2, Compare[Optional]
- String1 As String: Chuỗi đầu tiên để so sánh
- String2 As String: Chuỗi thứ hai để so sánh
- Compare as vbCompareMethod: Tham số tùy chọn. Chỉ định so sánh chuỗi được sử dụng.
Giá trị trả về của StrComp
Giá trị trả về | Mô tả |
0 | Các chuỗi khớp |
-1 | string1 nhỏ hơn string2 |
1 | string1 lớn hơn string2 |
Null (vô giá trị) | nếu một trong hai chuỗi là null |
Sử dụng và các ví dụ
Sau đây là một số ví dụ về việc sử dụng hàm StrComp :
So sánh các chuỗi bằng toán tử
Sử dụng dấu “=” để so sánh các chuỗi, sự khác biệt giữa cách này với hàm StrComp:
- Dấu bằng chỉ trả về true hoặc false.
- Bạn không thể chỉ định tham số Compare bằng dấu “=” – tham số này sử dụng cài đặt “Option Compare”.
Ví dụ:
Toán tử “<>” có nghĩa là “không bằng”. Về cơ bản nó ngược lại với việc sử dụng dấu bằng như đoạn mã sau cho thấy
So sánh các chuỗi bằng cách sử dụng đối sánh mẫu
Operator | Tham số | Mô tả | Example |
Like | string, string pattern | kiểm tra xem chuỗi có mẫu đã cho không | “abX” Like “??X”“54abc5” Like “*abc#” |
Mã thông báo | Ý nghĩa |
? | Bất kỳ ký tự đơn nào |
# | Bất kỳ chữ số đơn nào (0-9) |
* | Không ký tự hoặc nhiều ký tự |
[charlist] | Bất kỳ ký tự nào trong danh sách |
[!charlist] | Bất kỳ ký tự nào không có trong danh sách ký tự |
Đối sánh mẫu được sử dụng để xác định chuỗi có mẫu ký tự cụ thể hay không. Ví dụ: bạn muốn kiểm tra khách hàng có 3 chữ số và theo sau là 3 ký tự chữ cái hoặc một chuỗi có các chữ cái XX và theo sau là bất kỳ kí tự nào.
Nếu chuỗi khớp với mẫu thì giá trị trả về là true, ngược lại là False.
Ví dụ sử dụng cơ bản các mã thông báo, chuỗi mã như sau:
[abc] [! def]? # X *
Xem cách chuỗi nay hoạt động:
[abc] một ký tự là a, b hoặc c[! Def] một ký tự chung không phải là d, e hoặc f? bất kỳ ký tự nào# bất kỳ chữ số nàoX ký tự X
* theo sau bởi không hoặc nhiều ký tự
Do đó, chuỗi sau là apY6X hợp lệa là một trong abcp không phải là một trong các ký tự d, e hoặc fY là bất kỳ ký tự nào6 là một chữ sốX là chữ X
Các ví dụ mã sau đây cho thấy kết quả của các chuỗi khác nhau với mẫu này :
Lưu ý quan trọng về đối sánh mẫu VBA
Toán tử Like sử dụng so sánh nhị phân hoặc văn bản dựa trên cài đặt Option Compare.
Thay thế chuỗi (Replace)
Hàm | Tham số | Mô tả | Example |
Replace | string, find, replace,start, count, compare | Thay thế một chuỗi bằng chuỗi khác | Replace (“Jon”,”n”,”hn”) |
Replace được sử dụng để thay thế một chuỗi con bằng một chuỗi con khác. Nó thay thế tất cả các trường hợp của chuỗi con được tìm thấy theo mặc định.
Mô tả các tham số trong Replace
Replace() Expression, Find, Replace, Start[Optional], Count[Optional], Compare[Optional]
- Expression As String: Chuỗi để thay thế các ký tự.
- Find As String: Chuỗi con để thay thế trong chuỗi Expression.
- Replace As String: Chuỗi thay thế chuỗi Find.
- Start As Long [Tùy chọn – Mặc định là 1]: Vị trí bắt đầu trong chuỗi
- Count As Long [Tùy chọn – Mặc định là -1]: Số lần thay thế cần thực hiện. -1 mặc định có nghĩa là tất cả.
- Compare AS vbCompareMethod: Xem mục Compare ở ví dụ trên.
Ví dụ và cách sử dụng
Đoạn mã sau đây cho thấy một số ví dụ về việc sử dụng hàm Replace:
Kết quảA; B; C; D; EPeter Jones, Sophia JonesACD ABC BAB
Trong các ví dụ sau, chúng ta sử dụng tham số tùy chọn Count để xác định số lần thay thế cần thực hiện. Ví dụ, đặt Count bằng 1 có nghĩa là thay thế ngay lần xuất hiện đầu tiên.
Kết quảA;B?C?D?EA;B;C;D?E
Tham số tùy chọn Start cho phép bạn trả lại một phần của một chuỗi. Vị trí bạn chỉ định bằng Start là nơi nó bắt đầu trả về từ vị trí đó và do vậy nó sẽ không trả về bất kỳ phần nào của chuỗi trước vị trí này cho dù có thực hiện thay thế hay không.
Kết quả;C;D;E;ECD
Đôi khi bạn muốn thay thế chữ hoa hoặc chữ thường. Chúng ta có thể sử dụng tham số Compare để thực hiện việc này.
Kết quảXaXaXXXX
Thay thế nhiều giá trị trong chuỗi
Nếu bạn muốn thay thế nhiều giá trị trong một chuỗi, chúng ta có thể lồng các lệnh với nhau. Trong đoạn mã sau, chúng ta muốn thay thế X và Y bằng A và B tương ứng.
Trong ví dụ tiếp theo, chúng tôi sẽ thay đổi đoạn mã để thực hiện tác vụ tương tự. Sử dụng giá trị trả về của thay thế đầu tiên làm đối số cho thay thế thứ hai.
Kết quả của cả hai Sub này làXYCD XYDN
Chuyển đổi Types thành String (Cơ bản)
Phần này để cập chuyển đổi số thành một chuỗi. Một điểm rất quan trọng ở đây là VBA sẽ tự động chuyển đổi thành chuỗi, ví dụ:
Khi mã chạy, số đã được tự động chuyển đổi thành chuỗi. Khi gán một giá trị cho một chuỗi, VBA sẽ chịu trách nhiệm chuyển đổi.
Chuyển đổi dữ liệu tường minh
Hàm | Tham số | Mô tả | Ví dụ |
CStr | Expression | Chuyển đổi một biến số thành một chuỗi | CStr (“45,78”) |
Str | number | Chuyển đổi một biến số thành một chuỗi | Str (“45,78”) |
Trong một số trường hợp, có thể sử dụng cả hai hàm trên để chuyển đổi một mục thành một một chuỗi mà không cần đặt nó vào một biến trong chuỗi trước. Cả hai đều lấy được biểu thức dưới dạng hàm và áp dụng nhiều kiểu dữ liệu như Long, Double, Data hoặc là Boolean..
Ví dụ bạn đang đọc danh sách các giá trị từ các loại khác nhau trong bộ sưu tập. Chúng ta có thể sử dụng hàm Str/CStr để đảm bảo chúng lưu trữ dưới dạng chuỗi, ví dụ:
Trong ví dụ trên có thể sử dụng Str để chuyển đổi giá trị của một ô thành một chuỗi. Chúng ta gán giá trị cho chuỗi và sau đó gán chuỗi đó cho bộ sưu tập. Vì vậy, Str ở đây sẽ hiệu quả hơn.
Nhiều vùng dữ liệu
Sự khác biệt giữa hàm Str và CStr là CStr chuyển đổi dựa trên vùng. Nếu macro được sử dụng ở nhiều vùng thì cần sử dụng CStr cho các chuyển đổi chuỗi.
Bạn nên thực hành sử dụng CStr khi đọc giá trị từ các ô. Nếu mã được sử dụng ở một vùng khác thì bạn sẽ không phải thực hiện bất kỳ thay đổi nào để mã hoạt động chính xác.
Chuyển đổi chuỗi thành Number- CLng, CDbl, Val, v.v.
Hàm | Trả về | Ví dụ |
CBool | Boolean | CBool(“True”), CBool(“0”) |
CCur | Currency | CCur(“245.567”) |
CDate | Date | CDate(“1/1/2017”) |
CDbl | Double | CCur(“245.567”) |
CDec | Decimal | CDec(“245.567”) |
CInt | Integer | CInt(“45”) |
CLng | Long Integer | CLng(“45.78”) |
CVar | Variant | CVar(“”) |
Các hàm trên dùng để chuyển đổi chuỗi thành nhiều kiểu dữ liệu khác nhau.
Sử dụng các loại chuyển đổi mang đến sự linh hoạt. Có nghĩa bạn có thể xác định kiểu dữ liệu trong thời gian chạy. Trong đoạn mã sau, chúng ta đặt kiểu dữ liệu dựa trên đối số sType được truyền cho hàm PrintValue. Kiểu này có thể đọc đượcnguồn bên ngoài chẳng hạn như một ô. Nếu chúng ta khai báo một biến là Long thì nó sẽ luôn Long khi mã chạy.
Nếu chuỗi không phải là một số hợp lệ (tức là chứa các ký hiệu dạng số khác) thì bạn sẽ gặp lỗi “Loại không khớp”.
Hàm Val
Hàm Val chuyển đổi các số đầu tiên mà nó gặp. Khi nó gặp các chữ cái trong một chuỗi, nó sẽ dừng lại. Nếu chỉ có các chữ cái thì nó trả về giá trị là 0. Đoạn mã sau đây cho thấy một số ví dụ về việc sử dụng Val:
Hàm Val có hai nhược điểm
- Không Đa vùng –Val không nhận dạng các phiên bản số quốc tế, chẳng hạn như sử dụng dấu phẩy thay vì số thập phân. Do đó bạn nên sử dụng các hàm chuyển đối trên thay vì Val.
- Chuyển đổi các chuỗi không hợp lệ thành 0 –Điều này có thể bình thường trong một số trường hợp nhưng sẽ không tốt nếu chuỗi không hợp lệ gây ra lỗi. Ứng dụng có thể hành động theo đó. Các hàm chuyển đổi như CLng sẽ phát sinh lỗi nếu chuỗi chứa các ký tự không phải số.
Tạo chuỗi – hàm chuỗi
Function | Params | Description | Example |
String | number, character | Converts a number variable to a string | String (5,”*”) |
Hàm String được sử dụng để tạo một chuỗi các ký tự lặp lại. Đối số đầu tiên là số lần lặp lại, đối số thứ hai là ký tự.
Chuyển đổi Case / Unicode – StrConv, UCase, LCase
Function | Params | Description | Example |
StrConv | string, conversion, LCID | Converts a String | StrConv(“abc”,vbUpperCase) |
Kết quảMARY HAD A LITTLE LAMB
MARY HAD A LITTLE LAMB
mary had a little lamb
mary had a little lamb
Mary Had A Little Lamb
Các chuyển đổi khác
Cũng như trường hợp StrConv có thể thực hiện các chuyển đổi khác dựa trên thông số chuyển đổi. Bảng sau đây hiển thị danh sách các giá trị tham số khác nhau và tác dụng của chúng.
Constant | Value | Converts |
vbUpperCase | 1 | to upper case |
vbLowerCase | 2 | to lower case |
vbProperCase | 3 | first letter of each word to uppercase |
vbWide* | 4 | from Narrow to Wide |
vbNarrow* | 8 | from Wide to Narrow |
vbKatakana** | 16 | from Hiragana to Katakana |
vbHiragana | 32 | from Katakana to Hiragana |
vbUnicode | 64 | to unicode |
vbFromUnicode | 128 | from unicode |
Sử dụng chuỗi với mảng
Function | Params | Description | Example |
Split | expression, delimiter,limit, compare | Parses a delimited string to an array | arr = Split(“A;B;C”,”;”) |
Join | source array, delimiter | Converts a one dimensional array to a string | s = Join(Arr, “;”) |
Chuyển đổi chuỗi thành mảng bằng cách sử dụng Split
Bạn có thể dễ dàng phân tích cú pháp một chuỗi thành một mảng. Bạn chỉ cần sử dụng hàm Split với tham số là dấu phân cách. Đoạn mã sau đây cho thấy một ví dụ về việc sử dụng hàm Split.
Kết quả: JohnJanePaulSophie
Sử dụng Join chuyển đổi mảng thành chuỗi
Nếu bạn muốn xây dựng một chuỗi từ một mảng, bạn có thể thực hiện dễ dàng bằng cách sử dụng hàm Join. Đây thực chất là một sự đảo ngược của chức năng Split. Đoạn mã sau cung cấp một ví dụ về việc sử dụng Join :
Kết quả John,Jane,Paul,Sophie
Định dạng một chuỗi (Hàm Format)
Function | Params | Description | Example |
Format | expression, format,firstdayofweek, firstweekofyear | Formats a string | Format(0.5, “0.00%”) |
Hàm Format được sử dụng để định dạng một chuỗi dựa trên các hướng dẫn. Nó chủ yếu được sử dụng để đặt ngày hoặc số ở định dạng nhất định. Các ví dụ dưới đây cho thấy các cách phổ biến nhất.
Các ví dụ sau đây là một số cách định dạng số phổ biến:
Mẹo hữu ích để sử dụng định dạng
Một cách nhanh chóng để tìm ra định dạng sẽ sử dụng là áp dụng định dạng ô trên trang tính Excel. Ví dụ: thêm một số vào một ô. Sau đó nhấp chuột phải và định dạng ô theo cách bạn yêu cầu. Khi hài lòng với định dạng, hãy chọn Custom từ hộp danh sách danh mục ở bên trái. Khi bạn chọn mục này, bạn có thể thấy chuỗi định dạng trong hộp văn bản loại (xem hình ảnh bên dưới). Đây là định dạng chuỗi bạn có thể sử dụng trong VBA.
Và đó là toàn bộ những hướng dẫn cơ bản của chúng tôi về sử dụng String VBA. Nếu còn bất cứ thắc mắc nào về String trong VBA hay rộng hơn là Excel VBA hãy cmt ngay xuống phía dưới để được Học Excel Online giải đáp trong tích tắc nhé!
Từ khóa » Hàm Thay Thế Trong Vba
-
Hàm Replace() Trong VBA - Học Lập Trình VBA Online - VietTuts
-
Hướng Dẫn Sử Dụng Phương Thức Replace Trong VBA
-
Hỏi Về Replace Trong VBA ? | Giải Pháp Excel
-
Hàm Replace, Hàm Clean-để Xóa Dấu Cách Và Dấu Xuống Dòng
-
Bài 40 - Ứng Dụng Hàm Replace Trong VBA - YouTube
-
Làm Cách Nào để Tìm Và Thay Thế Nhiều Giá Trị Cùng Một Lúc Trong ...
-
Thay Thế Nhiều Ký Tự Trong Một Biến Chuỗi (VBA) - HelpEx
-
Hướng Dẫn Sử Dụng Phương Thức Replace Trong VBA
-
REPLACE, REPLACEB (Hàm REPLACE, REPLACEB)
-
Cách Sử Dụng Hàm REPLACE để Thay Thế đoạn Văn Bản Trong Excel
-
Hướng Dẫn Sử Dụng Hàm Replace Trong Excel để Thay Thế đoạn Văn ...
-
Excel — Thay Thế Nhiều Ký Tự Trong Một Biến Chuỗi (VBA)
-
Hàm Thay Thế Trong Excel VBA Cho Phạm Vi ô