![]() |
||||||||||||||
|
||||||||||||||
Tìm kiếm
Danh mục
Hàng mới
![]() Phần mềm trình chiếu Powerpoint 400.000 VNĐ ![]() Trợ giúp trình chiếu Powerpoint 50.000 VNĐ ![]() Nhận gia công website 999.000 VNĐ
Liên hệ: Minh
0976.775.168
Quảng cáo
|
Thanh công cụ
Các hàm xử lý chuỗi trong VBA
LẬP TRÌNH VBA InStr: Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ trái sang phải.
InstrRev: Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ bên phải sang trái.
Lcase: Trả về chuỗi chữ hoa của chuỗi được chỉ định.
Ucase: Trả về chuỗi chữ thường của chuỗi được chỉ định. Ltrim: Trả về một chuỗi sau khi loại bỏ các khoảng trống ở phía bên trái của chuỗi được chỉ định.
Rtrim: Trả về một chuỗi sau khi loại bỏ các khoảng trống ở phía bên phải của chuỗi được chỉ định.
Len: Trả về độ dài của chuỗi đã cho.
Replace: Trả về một chuỗi sau khi thay thế một chuỗi với một chuỗi khác.
Space: Điền vào một chuỗi với số ký tự space được chỉ định. Điền vào một chuỗi với số ký tự space được chỉ định. Nếu... Thì...: If ... Then ... Nếu... Và... Thì...: If ... And... Then ... Hàm 1 biến: Function hammotbien(x)
hammotbien = x * 8 & " ok"
End Function
Hàm 2 biến: Function hamhaibien(x, y) hamhaibien = x * 4 + 3 * y
End Function
Hàm if đơn: Function vnd(x)
If x = 1 Then
vnd = "m?t"
End If
If x = 2 Then
vnd = "hai"
End If
End Function
Bài toán kinh điển: Viết code đọc số thành chữ cho một số bất kỳ (chứa tối đa 15 chữ số). Phân tích bài toán: Bài toán tưởng chừng đơn giản này là nguyên nhân ra đời vô vàn ý tưởng. Mỗi ý tưởng lại được các lập trình viên giải bằng những dòng code khác nhau. Nếu bạn có thể sử dụng những câu lệnh do chính mình nghĩ ra để giải quyết được bài toán này thì bạn đã có một lượng kiến thức kha khá rồi đấy. Hãy cùng chúng tôi phân tích cái hay của những dòng Code nhé. Gọi số cần đọc là: abcdefghiklmnop. Trong đó: a, b, c, d, e, f, g, h, i, k, l, m, n, o, p là các số tự nhiên từ 0 đến 9.
Ý tưởng 1: Có công mài sắt có ngày nên kim. Định nghĩa lần lượt: số cần đọc (x): x = 1 -------- "một", x = 2 -------- "hai", ..., x = 99999...999 ------ "chín.....chín". Ý tưởng 2: - Dùng hàm RIGHT để tách lấy chữ số hàng đơn vị p. Sau đó dùng hàm 1 (tự đặt tên) để định nghĩa cách đọc từ 0 đến 9, có sử dụng kết hợp hàm LEN và so sánh với số 21 (vì hàng chục lớn hơn 1 thì cách đọc của số 1 có khác đi. VD: (11) mười một. (21) hai mươi mốt. - Dùng hàm RIGHT kết hợp LEFT hoặc hàm MID kết hợp LEN để tách lấy chữ số hàng chục o. Sau đó dùng hàm 2 (tự đặt tên) để định nghĩa cách đọc từ 0 đến 9, có sử dụng kết hợp hàm LEN. Ý tưởng 3: Font VNI abcdefghijklmop = x = BaoNhieu Ý tưởng này sẽ tách lớp: abc (nghìn tỷ), def (tỷ), ghi (triệu), jkl (nghìn), mop (đơn vị). Tùy vào x cụ thể, lớp có thể gồm 0, 1, 2 hoặc 3 chữ số. - Hàm số: VND. Biến số chính: BaoNhieu. Biến phụ: KetQua, SOTIEN, NHOM, Chu, Dich, S1, S2, S3. - - Định nghĩa: x = 0 -> KetQua = "Khoâng ñoàng". Trường hợp Giá trị tuyệt đối phần nguyên của x lớn hơn 15 chữ số -> KetQua = "Soá Quùa Lôùn". Trường hợp x là số nguyên âm -> KetQua = "Tröø" & Space(1). Các trường hợp khác để nguyên, các chữ số đứng sát nhau. - Giá trị tuyệt đối của SOTIEN được định dạng dưới dạng: ###############. Tính từ bên phải sang, lấy 15 ký tự của phần nguyên -> SOTIEN = Right(Space(15) & SOTIEN, 15).
- Hàng, cách đọc, cách đếm được khai báo theo mảng -> Hang = Array("None", "traêm", "möôi", "gì ñoù"). DOC = Array("None", "ngaøn tyû,", "tyû,", "trieäu,", "ngaøn,", "ñoàng "). DEM = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chín"). Cái hay của việc khai báo khi sử dụng hàm Array sẽ cho tương ứng với các số những cụm từ tương ứng, giảm thiểu tối đa việc định nghĩa các số. - Biến I chạy từ 1 đến 5 (Vòng lặp For next). NHOM sẽ lấy 3 ký tự giữa căn cứ vào biến SOTIEN, bắt đầu từ ký tự phục thuộc biến I theo công thức: NHOM = Mid(SOTIEN, I * 3 - 2, 3). NHOM ở đây có tác dụng tách lớp: mop (lớp đơn vị) jkl (lớp nghìn) ghi (lớp triệu) def (lớp tỷ) abc (lớp nghìn tỷ) . Trường hợp NHOM khác 3 ký tự. Thực hiện một nhóm các câu lệnh theo NHOM. Lệnh 1: - S1 là chữ số đầu tiên của mỗi nhóm. S2 là chữ số giữa của mỗi nhóm. S3 là chữ số cuối của mỗi nhóm. S lấy từng chữ số trong NHOM tùy thuộc vào biến J theo công thức: S = Val(Mid(NHOM, J, 1)). Nếu S > 0, đếm S, Dịch theo công thức: Dich = DEM(S) & Space(1) & Hang(J) & Space(1) - Thực hiện một nhóm các câu lệnh theo J:
- Nếu lớp có hàng chục bằng 1, dịch là: Dich = "möôøi" & Space(1). Tại lớp đơn vị, nếu chữ số hàng chục bằng 0 thì dịch là: Dich = "leû" & Space(1). - Nếu lớp có số hàng đơn vị bằng 0, dịch là: Case 3 And S = 0 And NHOM <> Space(2) & "0" Dich = Hang(J) & Space(1)
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or (S1 = "0" And I = 3) Or _- Nếu lớp có hàng đơn vị bằng 5, hàng chục khác 0, thì đọc là "lăm": Dich = "1" & Mid(Dich, 2) '(Kyù töï e lờ). øTrường hợp lớp có hàng chục bằng 0, hàng đơn vị khác 0, thì dịch là "linh" -> Case 2 And S = 0 And S3 <> "0" (S1 = "0" And I = 4) Then Dich = "linh" & Space(1).
- Nếu lớp có hàng trăm bằng 0, trước hàng đó vẫn còn số hoặc chữ số hàng đơn vị dịch là "không trăm". Function VND(BaoNhieu) Dim KetQua, SOTIEN, NHOM, Chu, Dich, S1, S2, S3 As String Dim I, J, Vitri As Byte, S As Double Dim Hang, DOC, DEM If BaoNhieu = 0 Then KetQua = "Khoâng ñoàng" Else If Abs(BaoNhieu) > 1E+15 Then KetQua = "Soá Quùa Lôùn" Else If BaoNhieu < 0 Then KetQua = "Tröø" & Space(1) Else KetQua = Space(0) End If SOTIEN = Format(Abs(BaoNhieu), "###############") SOTIEN = Right(Space(15) & SOTIEN, 15) Hang = Array("None", "traêm", "möôi", "gì ñoù") DOC = Array("None", "ngaøn tyû,", "tyû,", "trieäu,", "ngaøn,", "ñoàng ") DEM = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chín") For I = 1 To 5 NHOM = Mid(SOTIEN, I * 3 - 2, 3) If NHOM <> Space(3) Then Select Case NHOM Case "000" If I = 5 Then Chu = "ñoàng chaün " & Space(1) Else Chu = Space(0) End If Case Else S1 = Left(NHOM, 1) S2 = Mid(NHOM, 2, 1) S3 = Right(NHOM, 1) Chu = Space(0) Hang(3) = DOC(I) For J = 1 To 3 Dich = Space(0) S = Val(Mid(NHOM, J, 1)) If S > 0 Then Dich = DEM(S) & Space(1) & Hang(J) & Space(1) End If Select Case J Case 2 And S = 1 Dich = "möôøi" & Space(1) Case 2 And S2 = "0" And S3 <> "0" And S1 >= "0" And I = 5 Dich = "leû" & Space(1) Case 3 And S = 0 And NHOM <> Space(2) & "0" Dich = Hang(J) & Space(1) Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0" Dich = "1" & Mid(Dich, 2) 'Kyù töï en lôø Case 2 And S = 0 And S3 <> "0" If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or (S1 = "0" And I = 3) Or _ (S1 = "0" And I = 4) Then Dich = "linh" & Space(1) End If Case 1 And S = 0 And S3 <> "0" If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or _ (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then Dich = "khoâng traêm" & Space(1) End If Case 1 And S = 0 And S3 = "0" If (S1 >= "1" And S2 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or _ (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then Dich = "khoâng traêm" & Space(1) End If End Select Chu = Chu & Dich Next J End Select Vitri = InStr(1, Chu, "möôi moät", 1) If Vitri > 0 Then Mid(Chu, Vitri, 9) = "möôi moát" KetQua = KetQua & Chu End If Next I End If End If VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2) End Function |
Đăng nhập
Giỏ hàng
Hàng bán chạy
![]() Phần mềm Quản lý kho Offline 299.000 VNĐ ![]() Monkey Stories 499.000 VNĐ ![]() Monkey Math 499.000 VNĐ
Thống kê
Lượt truy cập : 940193
Số người online : 72 + Khách : 72 + Thành viên : 0
Quảng cáo
|
||||||||||||
Trang chủGiới thiệuSản phẩmInsight EnglishBHXHDatabaseTiện íchGiải tríKhoảng trờiWall Web | ||||||||||||||
|