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

Liên hệ QC

hiennv.tsc

Thành viên mới
Tham gia
13/4/19
Bài viết
48
Được thích
16
Chúc các bạn cuối tuần vui vẻ nhé!
Nhờ các bạn viết giúp hàm như file mình đính kèm.
Xin trân thành cảm ơn các bạn.
 

File đính kèm

  • Tìm kiếm và thay thế(dạng mảng).xlsb
    17.8 KB · Đọc: 33
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)
 
Upvote 0
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.
 
Upvote 0
Upvote 0
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: 6
Upvote 0
(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:
Upvote 0
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:
Upvote 0
Web KT
Back
Top Bottom