• Nhờ tính giúp tài khoản số đẹp trong ngân hàng
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    ledangvan > 06-06-21, 12:21 PM

    (05-06-21, 02:24 PM)tungthoi15 Đã viết:
    (05-06-21, 09:55 AM)ledangvan Đã viết: Đại khái như này : https://www.mediafire.com/file/qvncuql1i...p.mdb/file

    Chẳng cần tẹo code nào  014

    (Tôi mới thử phân tích 4 số cuối chùng nhau, ví dụ : 1111, 2222, 3333 ...)
    Rất cám ơn bác Ledangvan ạ! Nhưng
    Vấn đề là không đơn giản như thế đâu bác ơi.
    Vì đấy là số lặp cuối 3 số, hay 4 số hay 7, hoặc 8 số thì cũng dễ thôi
    Thế bây giờ tìm số tài khoản đấy có bao nhiêu số tam hoa, mà tam hoa thì tính bất kỳ đâu trong số tài khoản
    Có 1 tam hoa, hay là 2 tam hoa, hay là 3 tam hoa
    Bác có liệt kê hết được không??
    Tài khoản của Agribank thì luôn là 13 số theo dạng: xxxx-yyyyyyyyy
    Trong đó xxxx là mã chi nhánh, còn yyyyyyyyy thì tự ý thay đổi

    Tôi nói luật chơi là do bạn qui định cơ mà : Thỉnh thoảng bạn lại cho một nội dung : 4 số đuôi, tám số đít, tiến lùi . tam hoa, bát nhị ...
    Bạn ra luật của nó thì tự điền vào cái định nghĩa ở bảng 1 như tôi ví dụ, lúc phân tích nó sẽ chọn đúng với kết quả nào thì nó tương ứng với số tiền mà khách phải trả. 
    Đây là định nghĩa chứ ko phải viết code
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    ongke0711 > 08-06-21, 08:25 AM

    Hôm nay rảnh làm demo cho bạn một số trường hợp.
    - Số tiến vị trí bất kỳ, và vị trí cuối: 3 ,4, 5, 6 số
    - Số trùng vị trí cuối: 3, 4 ,5, 6 số trùng.

    [Hình: 4M767wD.png]


    Code:

    Mã PHP:
    Option Compare Database
    Option Explicit

    Const sNumList As String "0123456789"

    Sub test()
        Dim inputNum As StringAs Integer
        
        inputNum 
    "1523276723456"
        Debug.Print "[So TK: " inputNum "]"
        For 3 To 6
            Call kiemTraSoTienCuoi
    (iinputNum)
        Next
        
    End Sub

    Sub test1
    ()
        Dim inputNum As StringAs Integer
        
        inputNum 
    "1523696781436"
        Debug.Print "[So TK: " inputNum "]"
        For 3 To 6
            Call kiemTraSoTienBatKy
    (iinputNum)
        Next
        
    End Sub

    Sub test2
    ()
        Dim inputNum As StringAs Integer
        
        inputNum 
    "1536787333333"
        Debug.Print "[So TK: " inputNum "]"
        For 3 To 6
            Call kiemTraSoTrungCuoi
    (iinputNum)
        Next
        
    End Sub

    Sub kiemTraSoTienBatKy
    (so As IntegerinputNum As String)  'so: 3,4,5,6 sô tién
        Dim arrListNum() As String, i As Integer, k As Integer, ret As Boolean
        
        arrListNum = Split(listSoTien3456Cuoi(so), ",")
        ret = False
        For i = 0 To UBound(arrListNum)
            For k = 5 To Len(inputNum) - so + 1
                If Mid(inputNum, k, so) = arrListNum(i) Then
                  ret = True
                    Exit For
                End If
                
            Next k
        Next i
        '
    MsgBox "- " so " so tien vi tri bat ky: " ret
        Debug
    .Print "- " so " so tien vi tri bat ky: " ret
        
    End Sub


    Sub kiemTraSoTienCuoi
    (so As IntegerinputNum As String)  'so: 3,4,5,6 sô tién
        Dim arrListNum() As String, i As Integer, ret As Boolean
        
        arrListNum = Split(listSoTien3456Cuoi(so), ",")
        ret = False
        For i = 0 To UBound(arrListNum)
            If Right(inputNum, so) = arrListNum(i) Then
              ret = True
                Exit For
            End If
        Next
        '
    MsgBox "- " so " so tien cuoi: " ret
        Debug
    .Print "- " so " so tien cuoi: " ret
        
    End Sub

    Sub kiemTraSoTrungCuoi
    (so As IntegerinputNum As String)  'so: 3,4,5 sô trùng - tam, tu ngu hoa
        Dim arrListNum() As String, i As Integer, ret As Boolean
        
        arrListNum = Split(listSoCuoiTrung345(so), ",")
        ret = False
        For i = 0 To UBound(arrListNum)
            If Right(inputNum, so) = arrListNum(i) Then
              ret = True
                Exit For
            End If
        Next
        '
    MsgBox "- " so " so trung cuoi: " ret
        Debug
    .Print "- " so " so trung cuoi: " ret
        
    End Sub

    Function listSoTien3456Cuoi(iNumOfDigit As Integer) As String
        
        Dim i 
    As Long
        
        listSoTien3456Cuoi 
    ""
        For 1 To Len(sNumList) - (iNumOfDigit 1)
            listSoTien3456Cuoi listSoTien3456Cuoi Mid(sNumListiiNumOfDigit) & ","
        Next
        listSoTien3456Cuoi 
    Left(listSoTien3456CuoiLen(listSoTien3456Cuoi) - 1)
        
    End 
    Function

    Function 
    listSoCuoiTrung345(iNumOfDigit As Integer) As String
        
        Dim i 
    As IntegerAs Integer
        
        listSoCuoiTrung345 
    ""
        For 0 To Len(sNumList) - 1
            
    For 1 To iNumOfDigit
                listSoCuoiTrung345 
    listSoCuoiTrung345 i
            Next k
            listSoCuoiTrung345 
    listSoCuoiTrung345 ","
        Next i
        listSoCuoiTrung345 
    Left(listSoCuoiTrung345Len(listSoCuoiTrung345) - 1)
        
    End 
    Function 
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    ongke0711 > 08-06-21, 06:11 PM

    Hàm kiểm tra 2 số lập lại 2, 3, 4 lần.

    [Hình: 51232675752_ef975209fe_c.jpg]


    Mã PHP:
    Sub test3()
        Dim inputNum As StringAs Integer
        
        inputNum 
    "1536743434343"
        Debug.Print "[So TK: " inputNum "]"
        For 2 To 4
            Call kiemTra2SoLap
    (iinputNum)
        Next
        
    End Sub

    Sub kiemTra2SoLap
    (solan As IntegerinputNum As String)    '2,3,4 lan
        Dim i As Integer, ret As Boolean
        
        ret = False
        For i = 0 To UBound(arrChinhHop2)
            If Right(inputNum, solan * 2) = repeatString(solan, arrChinhHop2(i)) Then
              ret = True
                Exit For
            End If
        Next
        '
    MsgBox "- " so " so trung cuoi: " ret
        Debug
    .Print "- 2 so cuoi lap " solan " lan: " ret

    End Sub

    Function arrChinhHop2() As Variant  'n=10
        Dim s As String
        Const sNum As String = "0123456789"
        '
    01 02 03 04 05 06 07 08 09 10 12 13 14 15 16 ...: 89 cap so
        
        Dim i 
    As IntegerAs Integer
        s 
    ""
        For 1 To Len(sNum)
            For 1 To Len(sNum)
                If Mid(sNumi1) <> Mid(sNumk1Then      'bo qua so 00,11,22,...,99
                    s = s & Mid(sNum, i, 1) & Mid(sNum, k, 1) & ","
                End If
            Next k
        Next i
        s = Left(s, Len(s) - 1)
        '
    Debug.Print s
        arrChinhHop2 
    Split(s",")
        'Debug.Print UBound(arrChinhHop2)
    End Function

    Function repeatString(n As Integer, str As Variant) As String
        repeatString = Replace(Space(n), " ", str)
    End Function 
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    tungthoi15 > 09-06-21, 10:11 AM

    (08-06-21, 06:11 PM)ongke0711 Đã viết: Hàm kiểm tra 2 số lập lại 2, 3, 4 lần.

    [Hình: 51232675752_ef975209fe_c.jpg]


    Mã PHP:
    Sub test3()
        Dim inputNum As StringAs Integer
        
        inputNum 
    "1536743434343"
        Debug.Print "[So TK: " inputNum "]"
        For 2 To 4
            Call kiemTra2SoLap
    (iinputNum)
        Next
        
    End Sub

    Sub kiemTra2SoLap
    (solan As IntegerinputNum As String)    '2,3,4 lan
        Dim i As Integer, ret As Boolean
        
        ret = False
        For i = 0 To UBound(arrChinhHop2)
            If Right(inputNum, solan * 2) = repeatString(solan, arrChinhHop2(i)) Then
              ret = True
                Exit For
            End If
        Next
        '
    MsgBox "- " so " so trung cuoi: " ret
        Debug
    .Print "- 2 so cuoi lap " solan " lan: " ret

    End Sub

    Function arrChinhHop2() As Variant  'n=10
        Dim s As String
        Const sNum As String = "0123456789"
        '
    01 02 03 04 05 06 07 08 09 10 12 13 14 15 16 ...: 89 cap so
        
        Dim i 
    As IntegerAs Integer
        s 
    ""
        For 1 To Len(sNum)
            For 1 To Len(sNum)
                If Mid(sNumi1) <> Mid(sNumk1Then      'bo qua so 00,11,22,...,99
                    s = s & Mid(sNum, i, 1) & Mid(sNum, k, 1) & ","
                End If
            Next k
        Next i
        s = Left(s, Len(s) - 1)
        '
    Debug.Print s
        arrChinhHop2 
    Split(s",")
        'Debug.Print UBound(arrChinhHop2)
    End Function

    Function repeatString(n As Integer, str As Variant) As String
        repeatString = Replace(Space(n), " ", str)
    End Function 
    Em chân thành cảm ơn @OngKe0711 ạ, Diễn đàn này thật may mắn có được thành viên như bác, đầy nhiệt tình và tâm huyết.
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    ongke0711 > 12-06-21, 10:42 AM

    Đảo 2, 3 số cuối.


    [Hình: fpYZkA4.png]


    Mã PHP:
    Sub test4()
        Dim inputNum As StringAs Integer
        
        inputNum 
    "1536743342243"
        Debug.Print "[So TK: " inputNum "]"
        For 2 To 3
            Call kiemTraDaoSo
    (iinputNum)
        Next
        
    End Sub

    Sub kiemTraDaoSo
    (sokytu As IntegerinputNum As String)
        'Dao 2 so: 5665
        '
    Dao 3 so867769
        Dim strDaoSo 
    As Stringret As Boolean
        
        ret 
    False
        strDaoSo 
    DaoChuSo(Right(inputNumsokytu)) & Right(inputNumsokytu)
        If Right(inputNumsokytu 2) = strDaoSo Then
            ret 
    True
        End 
    If
        Debug.Print "- Dao " sokytu " so cuoi: " ret
        
    End Sub

    Function DaoChuSo(sText As StringOptional isNum As Boolean) As Variant
        Dim i 
    As Integer
        Dim strNewTxt 
    As String
        Dim strOld 
    As String
        
        strOld 
    Trim(sText)
        For 1 To Len(strOld)
            strNewTxt Mid(strOldi1) & strNewTxt
        Next i
        
        
    If isNum True Then
            DaoChuSo 
    CLng(strNewTxt)
        Else
            DaoChuSo strNewTxt
        End 
    If
    End Function 
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    ongke0711 > 15-06-21, 12:37 AM

    Chốt bài phân tích mấy con số này nhé. Các trường hợp khác nhìn bẳng mắt vậy.  007
    Bạn muốn chế biến kiểu khác thì vẫn dùng mấy cái hàm kiểm số rồi biến tấu lên form thôi.

    Link demo: https://drive.google.com/file/d/1_LYbZh8...sp=sharing

    [Hình: 026vuinh.png]
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    tungthoi15 > 15-06-21, 11:16 AM

    (15-06-21, 12:37 AM)ongke0711 Đã viết: Chốt bài phân tích mấy con số này nhé. Các trường hợp khác nhìn bẳng mắt vậy.  007
    Bạn muốn chế biến kiểu khác thì vẫn dùng mấy cái hàm kiểm số rồi biến tấu lên form thôi.

    Link demo: https://drive.google.com/file/d/1_LYbZh8...sp=sharing

    [Hình: 026vuinh.png]

    Vâng, cám ơn bác, Nhờ có sự giúp đỡ nhiệt tình của bác. Em đã làm và học hỏi được nhiều ạ.
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    tungthoi15 > 15-06-21, 11:28 AM

    To: OngKe0711
    Em xong hết rồi, còn đúng 1 trường hợp nữa là tính các cặp số kép 00, 11 ,22....99 liền nhau nằm bất kỳ đâu trong dãy số, bác giúp em với
    Nó gần giống đoạn code này của bác, nhưng em chưa chế biến theo được
    Mã:
    Sub kiemTra2SoLap234(inputNum As String)    '2,3,4 lan
    'Lap 2 lan: 1212
    'Lap 3 lan: 121212

        Dim checkStr As String, i As Integer, j As Integer, ret As Boolean

        checkStr = Right(inputNum, 2)
        If IsIn(checkStr, "00,11,22,33,44,55,66,77,88,99") Then Exit Sub    'Loai bo truong hop so Tam hoa, so trung
        For i = 2 To 4
            If Right(inputNum, i * 2) = repeatString(i, checkStr) Then
                ret = True
                j = i
            End If
        Next i
        If j > 0 Then
            sMsgTotal = sMsgTotal & vbCrLf & vbCrLf & "# 2 s" & ChrW(7889) & " cu" & ChrW(7889) & "i l" & ChrW(7863) & "p [" & j & "] l" & ChrW(7847) & "n: " & Right(inputNum, j * 2)
            Debug.Print "# 2 so cuoi lap " & j & " lan: " & ret
        End If

    End Sub
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    ongke0711 > 15-06-21, 12:56 PM

    (15-06-21, 11:28 AM)tungthoi15 Đã viết: To: OngKe0711
    Em xong hết rồi, còn đúng 1 trường hợp nữa là tính các cặp số kép 00, 11 ,22....99 liền nhau nằm bất kỳ đâu trong dãy số, bác giúp em với
    Nó gần giống đoạn code này của bác, nhưng em chưa chế biến theo được

    Chế biến từ code lấy số Tam Hoa kép + số tiến vị trí bất kỳ.


    Mã PHP:
    Sub kiemTraDaySoDoi(inputNum As String)
        Dim sLis2soTrung As StringcheckStr As Stringret As Boolean
        Dim i 
    As IntegerAs IntegerAs IntegerAs Integerso As String

        sLis2soTrung 
    listSoCuoiTrung3456(2)
        j 0
        
    For 2 To 4      '2-4 cap so trùng
            For k = 1 To Len(inputNum) - i + 1
                checkStr = Mid$(inputNum, k, i * 2)
                ret = IsIn(Left$(checkStr, 2), sLis2soTrung) And IsIn(Right$(checkStr, 2), sLis2soTrung)
                For n = 2 To i
                    ret = ret And IsIn(Mid$(checkStr, n * 2 - 1, 2), sLis2soTrung)
                Next n
                If ret = True Then
                    j = i      '
    Luu so cap cao nhat
                    so 
    Mid$(inputNumk2)
                    Exit For
                End If
            Next k
        Next i

        
    If >= 2 Then
            sMsgTotal 
    sMsgTotal vbCrLf vbCrLf "# Có [" "] c" ChrW(7863) & "p s" ChrW(7889) & " " ChrW(273) & "ôi: " so
            Debug
    .Print "# Có [" "] cap so doi: " so
        End 
    If


    End Sub 
  • RE: Nhờ tính giúp tài khoản số đẹp trong ngân hàng

    tungthoi15 > 15-06-21, 04:34 PM

    (15-06-21, 12:56 PM)ongke0711 Đã viết:
    (15-06-21, 11:28 AM)tungthoi15 Đã viết: To: OngKe0711
    Em xong hết rồi, còn đúng 1 trường hợp nữa là tính các cặp số kép 00, 11 ,22....99 liền nhau nằm bất kỳ đâu trong dãy số, bác giúp em với
    Nó gần giống đoạn code này của bác, nhưng em chưa chế biến theo được

    Chế biến từ code lấy số Tam Hoa kép + số tiến vị trí bất kỳ.


    Mã PHP:
    Sub kiemTraDaySoDoi(inputNum As String)
        Dim sLis2soTrung As StringcheckStr As Stringret As Boolean
        Dim i 
    As IntegerAs IntegerAs IntegerAs Integerso As String

        sLis2soTrung 
    listSoCuoiTrung3456(2)
        j 0
        
    For 2 To 4      '2-4 cap so trùng
            For k = 1 To Len(inputNum) - i + 1
                checkStr = Mid$(inputNum, k, i * 2)
                ret = IsIn(Left$(checkStr, 2), sLis2soTrung) And IsIn(Right$(checkStr, 2), sLis2soTrung)
                For n = 2 To i
                    ret = ret And IsIn(Mid$(checkStr, n * 2 - 1, 2), sLis2soTrung)
                Next n
                If ret = True Then
                    j = i      '
    Luu so cap cao nhat
                    so 
    Mid$(inputNumk2)
                    Exit For
                End If
            Next k
        Next i

        
    If >= 2 Then
            sMsgTotal 
    sMsgTotal vbCrLf vbCrLf "# Có [" "] c" ChrW(7863) & "p s" ChrW(7889) & " " ChrW(273) & "ôi: " so
            Debug
    .Print "# Có [" "] cap so doi: " so
        End 
    If


    End Sub 

    Quá tuyệt vời ông mặt trời rồi, em cám ơn bác ạ