Tìm kiếm và thay thế dạng mảng

Blue Softs Liên hệ QC

hiennv.tsc

Thành viên mới
Tham gia ngày
13 Tháng tư 2019
Bài viết
43
Được thích
15
của bài #24 và #31 thì chỉ kết quả bài #24 đúng.

Ý thức cho những người khác để nếu có trường hợp mã có <> 2 ký tự thì họ khỏi bị bất ngờ thôi. Còn tôi tin là bạn LUÔN LUÔN có mã 2 ký tự thôi.

Chuyện rút gọn bạn hỏi người khác cũng được mà. :D
Bạn @batman1, dữ liệu của mình bắt đầu từ Min= 0-Max=9000 (Tức là có mã từ 0,1,2......00...0001 và giới hạn đến max=9000)
 

batman1

Thành viên gạo cội
Tham gia ngày
8 Tháng chín 2014
Bài viết
4,360
Được thích
7,036
Bạn @batman1, dữ liệu của mình bắt đầu từ Min= 0-Max=9000 (Tức là có mã từ 0,1,2......00...0001 và giới hạn đến max=9000)
Thì bạn thử chạy code với dữ liệu thực - mã THỰC thì bạn thấy đúng hay sai thôi. Tự bạn kiểm tra rồi NHÌN kết quả xem có đúng không thôi. Nếu kết quả sai thì code chưa chuẩn. Không biết code vẫn biết nhìn thấy kết quả đúng hay sai mà.

Để tránh hiểu lầm thì tôi nhấn mạnh: tôi đang nói tới cái gọi là Mã mà ở bài #1 bạn liệt kê ở F3:T3.
 

hiennv.tsc

Thành viên mới
Tham gia ngày
13 Tháng tư 2019
Bài viết
43
Được thích
15
Chắc chủ bài đăng thích dẫn dắt vấn đề đến chỗ cãi lộn dây!
:D :D :D2uá quen rồi!
Bạn @SA_DQ lại nghĩ ý xấu rồi.
à mình hỏi chỗ này nhá, bạn tiêu diệt cái dấu khi mà mảng điều kiện không có thì nó phát sinh phát ra cái dấu "_"
Cảm ơn bạn!
 

File đính kèm

  • Thay thế dạng mảng.xlsb
    29.9 KB · Đọc: 4

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
12,433
Được thích
18,906
(1) Bạn khai báo thêm 1 hằng, ví dụ
Const KT As String = "01@02@03@10@11@12@13@20@21@22@23@30@31@32@33@"
& dùng hàm InStr(KT, GPE) kiểm tra; Nếu có thì xử lý, còn không thời cho qua.

(2)
PHP:
Function UDF(ChuoiTim As String, Optional DongDo As Byte = 1) As String '
 Dim VTr As Byte:                                   Dim DDK As String
 
 ChuoiTim = ChuoiTim & ","
 Do
    VTr = InStr(ChuoiTim, ",")
    If VTr < 1 Then
        Exit Function
    Else
        DDK = Left(ChuoiTim, VTr - 1)
        If DDK = "01" Then
            UDF = UDF & "_" & Choose(DongDo, "a1,b1,c1", "d1,e1,f1", "g1,i1,k1")
        ElseIf DDK = "02" Then
            UDF = UDF & "_" & Choose(DongDo, "a2,b2,c2", "d2,e2,f2", "g2,i2,k2")
        ElseIf DDK = "03" Then
            UDF = UDF & "_" & Choose(DongDo, "a3,b3,c3", "d3,e3,f3", "g3,i3,k3")
        ElseIf DDK = "10" Then
            UDF = UDF & "_" & Choose(DongDo, "a4,b4,c4", "d4,e4,f4", "g4,i4,k4")
        ElseIf DDK = "11" Then
            UDF = UDF & "_" & Choose(DongDo, "a5,b5,c5", "d5,e5,f5", "g5,i5,k5")
        ElseIf DDK = "12" Then
            UDF = UDF & "_" & Choose(DongDo, "a6,b6,c6", "d6,e6,f6", "g6,i6,k6")
        ElseIf DDK = "13" Then
            UDF = UDF & "_" & Choose(DongDo, "a7,b7,c7", "d7,e7,f7", "g7,i7,k7")
        ElseIf DDK = "20" Then
            UDF = UDF & "_" & Choose(DongDo, "a8,b8,c8", "d8,e8,f8", "g8,i8,k8")
        ElseIf DDK = "21" Then
            UDF = UDF & "_" & Choose(DongDo, "a9,b9,c9", "d9,e9,f9", "g9,i9,k9")
        ElseIf DDK = "22" Then
            UDF = UDF & "_" & Choose(DongDo, "a10,b10,c10", "d10,e10,f10", "g10,i10,k10")
        ElseIf DDK = "23" Then
            UDF = UDF & "_" & Choose(DongDo, "a11,b11,c11", "d11,e11,f11", "g11,i11,k11")
        ElseIf DDK = "30" Then
            UDF = UDF & "_" & Choose(DongDo, "a12,b12,c12", "d12,e12,f12", "g12,i12,k12")
        ElseIf DDK = "31" Then
            UDF = UDF & "_" & Choose(DongDo, "a13,b13,c13", "d13,e13,f13", "g13,i13,k13")
        ElseIf DDK = "32" Then
            UDF = UDF & "_" & Choose(DongDo, "a14,b14,c14", "d14,e14,f14", "g14,i14,k14")
        ElseIf DDK = "33" Then
            UDF = UDF & "_" & Choose(DongDo, "a15,b15,c15", "d15,e15,f15", "g15,i15,k15")
        Else
        End If
        ChuoiTim = Mid$(ChuoiTim, VTr + 1, Len(ChuoiTim))
    End If
 Loop
 UDF = Mid$(UDF, 3, Len(UDF))
End Function
 
Lần chỉnh sửa cuối:

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
12,433
Được thích
18,906
Không biết thế này có phải là rút gọn hơn không nữa:

PHP:
Function UDF(ChuoiTim As String, Optional DongDo As Byte = 1) As String '
 Dim VTr As Byte, sNum As Byte:
 Dim Arr, DDK As String
 Const Dx As String = "a1,b1,c1;a2,b2,c2;a3,b3,c3;a4,b4,c4;a5,b5,c5;a6,b6,c6;a7,b7,c7;a8,b8,c8;a9,b9,c9;a10,b10,c10;a11,b11,c11;"
 Const D1 As String = Dx & "a12,b12,c12;a13,b13,c13;a14,b14,c14;a15,b15,c15;"
 Const Dy As String = "d1,e1,f1;d2,e2,f2;d3,e3,f3;d4,e4,f4;d5,e5,f5;d6,e6,f6;d7,e7,f7;d8,e8,f8;d9,e9,f9;d10,e10,f10;d11,e11,f11;"
 Const D2 As String = Dy & "d12,e12,f12;d13,e13,f13;d14,e14,f14;d15,e15,f15;"
 Const Dz As String = "G1,H1,I1;G2,H2,I2;G3,H3,I3;G4,H4,I4;G5,H5,I5;G6,H6,I6;G7,H7,I7;G8,H8,I8;G9,H9,I9;G10,H10,I10;G11,H11,I11;"
 Const d3 As String = Dz & "G12,H12,I12;G13,H13,I13;G14,H14,I14;G15,H15,I15;"
 On Error GoTo LoiCT
 
 D0 = Choose(DongDo, D1, D2, d3):               ChuoiTim = ChuoiTim & ","
 Arr = Split(D0, ";")
 Do
    VTr = InStr(ChuoiTim, ",")
    If VTr < 1 Then
        Exit Function
    Else
7       DDK = Left(ChuoiTim, VTr - 1)
8       sNum = Switch(DDK = "01", 0, DDK = "02", 1, DDK = "03", 2, DDK = "10", 3, DDK = "11", 4, DDK = "12", 5, DDK = "13", 6 _
             , DDK = "20", 7, DDK = "21", 8, DDK = "22", 9, DDK = "23", 10, DDK = "30", 11, DDK = "31", 12, DDK = "32", 13, DDK = "33", 14)
9       UDF = UDF & "_" & Arr(sNum)
        ChuoiTim = Mid$(ChuoiTim, VTr + 1, Len(ChuoiTim))
    End If
 Loop
 UDF = Mid$(UDF, 3, Len(UDF))
Err_:                                           Exit Function
LoiCT:
 If Err = 94 Then
    MsgBox Erl:                                 UDF = UDF & " Nhâp Sai!"
    Resume Err_
 Else
    MsgBox Err, , Error:                        Resume Next
 End If
End Function

Đây bạn, phải đọc tin tức coi còn phong toả theo nghị định 16 không đã
Thân
Làm gì có nghị định nào phong tỏa đâu chàng ; đó là 'Chỉ thị' mà!
 
Lần chỉnh sửa cuối:
Top Bottom