精华内容
下载资源
问答
  • 怎么利用vb里的循环算法实现对数组中重复数据查找的判别?怎么判断重复的数据的哪一个是待查数据?
  • VBA示例函数之 求人不如自已动手 搜索重复数据(选定范围),供初学者参考,大牛勿进~~~~~~~
  • 查找list中重复数据

    千次阅读 2016-08-31 15:45:36
    需求: 查找一个List集合中所有重复的数据,重复的数据...如果有重复数据,则给这些重复数据加上编号,上述数据改为:aa1, bb1, aa2, bb2, cc, dd.算法如下:public static void same(List<String> list) { String

    需求:
    查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据。如果有重复数据,则给这些重复数据加上编号,上述数据改为:aa1, bb1, aa2, bb2, cc, dd.

    算法如下:

    public static void same(List<String> list) {
            String [] indexArr ;
            Map<String, String> map = new HashMap<String, String>();
            for (int i = 0; i < list.size(); i++) {
                String key = list.get(i);
                String old = map.get(key);
                if (old != null) {
                    map.put(key, old + "," + (i + 1));
                } else {
                    map.put(key, "" + (i + 1));
                }
            }
            Iterator<String> it = map.keySet().iterator();
            int index = -1;
            while (it.hasNext()) {
                String key = it.next();
                String value = map.get(key);
                if (value.indexOf(",") != -1) {
                    System.out.println(key + " 重复,行: " + value);
                    indexArr = value.split(",");
    
                    for (int i = 0; i < indexArr.length; i++) {
                        index = Integer.parseInt(indexArr[i])-1;
                        list.set(index, list.get(index)+(1+i));
                    }
                }
            }
    
            for (String val : list) {
                System.out.println("val = "+val);
            }
            System.out.println("..................");
    
        }
    展开全文
  • 不同表格查找重复数据VBA

    千次阅读 2018-12-25 13:50:54
    '两个表格,表格中的某一列为对应列,查找这两列中的重复记录和差异记录。 Dim ar As Long, br As Long, i As Integer, j As Integer, num As Integer 'ar/br为行数,i为外层循环数控制,j为内层循环数控制 ...

    分析两个表格中对应列的重复情况。

    Sub Match_Dec()
        '两个表格,表格中的某一列为对应列,查找这两列中的重复记录和差异记录。
        
        Dim ar As Long, br As Long, i As Integer, j As Integer, num As Integer
            'ar/br为行数,i为外层循环数控制,j为内层循环数控制
        Dim A_Range As Range, B_Range As Range
        Dim myFont As Font
        
        Set A_Range = Worksheets("Sheet4").UsedRange
        Set B_Range = Worksheets("Sheet5").UsedRange
        
        ar = A_Range.Rows.Count
        br = B_Range.Rows.Count
        
        num = 0
    '查找重复行
        
        For i = 1 To ar
            Debug.Print "第" & i; "行"
            For j = 1 To br
                If A_Range.Cells(i, 1) = B_Range.Cells(j, 1) Then
                    Debug.Print "第" & j; "行为重复行"
    '                'myRange.Cells(i, 1).EntireRow.Delete shift:=xlShiftUp 'xlShiftToLeft
    '
                    Set myFont = A_Range.Cells(i, 1).EntireRow.Font
                    'Set myFont = B_Range.Cells(j, 1).EntireRow.Font
                    With myFont
                    .Name = "楷体"
                    .Size = 15
                    .Bold = True
                    .Italic = True
                    .Color = RGB(255, 0, 0)
                    .Strikethrough = True '水平删除线
                    .Underline = xlUnderlineStyleNone 'xlUnderlineStyleSingle 'xlUnderlineStyleDouble
                    .Shadow = False  '是/否无变化??
                    .Subscript = False
                    .Superscript = False
                    '具体属性设置参看:https://docs.microsoft.com/zh-cn/office/vba/api/excel.xlpattern
                    End With
                    
                    num = num + 1
                End If
             Next
        Next
        
        Debug.Print "共有" & num & "重复行"
    End Sub
    
    展开全文
  • 在Access中一般只能查找10行大概20条重复记录,这样程序就可以任意指定表及多字段检索重复记录,并把重复的记录移除到一个临时表中,并不是进行真正删除,你可以进行恢复。但是执行第二次查找时则自动删除上次查找的...
  • (2)实现上述功能的VB程序如下,请在划线处填入合适的代码。Constmaxn=10Dima(1 To maxn) As IntegerPrivateSub Form_Load()‘maxn个数据存储在数组a中,并在列表框List1中显示‘代码略EndSubPrivateSub Command1_...

    (2)

    实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const

    maxn=10

    Dim

    a(1 To maxn) As Integer

    Private

    Sub Form_Load()

    ‘maxn个数据存储在数组a中,并在列表框List1中显示

    ‘代码略

    End

    Sub

    Private

    Sub Command1_Click()

    Dim

    i As Integer, n As Integer     ‘n用于存储当前査找的数组长度

    Dim

    j As Integer, key As Integer     ‘key用于存储本次查找关键字的数据位置

    key=1:

    n=maxn

    Do

    While key <=n

    i=n

    Do While a(i) <> a(key)

    ________

    Loop

    If i=key Then     ‘未找到,重新下一査找关键字

    key=key+1

    Else    ‘找到重复数据,删除

    For j=i To n-1

    ________

    Next j

    n=n-1

    End If

    Loop

    For

    i=1 To n

    List2.AddItem Str(a(i))

    Next

    i

    Label1.Caption=“共删除数据”+________+“个”

    End

    Sub

    展开全文
  • 使用VB读取EXCEL数据的小程序

    千次阅读 2019-03-05 15:10:50
    使用VB读取EXCEL数据的小程序程序界面部分代码使用VB进行MD5加密的代码 程序界面 VB生成EXE工程时可能由于系统原因会导致按钮文字显示不全,缺字少字的情况,网上搜了好多帖子,有说DLL文件缺失,有说框体不够大等等...

    使用VB读取EXCEL数据的小程序

    程序界面

    VB生成EXE工程时可能由于系统原因会导致按钮文字显示不全,缺字少字的情况,网上搜了好多帖子,有说DLL文件缺失,有说框体不够大等等,我全都尝试了一遍都没有解决,最后本人使用了一个比较LOW的办法:在按钮Caption属性中输入文字时多加了些空格,终于解决了

    在这里插入图片描述

    部分代码

    代码片如下:.

        Dim excel_App As Excel.Application
        Dim excel_Book As Excel.Workbook
        Dim excel_sheet1 As Excel.Worksheet
        Dim excel_sheet2 As Excel.Worksheet
    Private Sub Form_Load()
    
        Set excel_App = CreateObject("excel.application")
        Set excel_Book = excel_App.Workbooks.Open(App.Path + "\MD5.xls")
        Set excel_sheet1 = excel_Book.Worksheets("sheet1")
        Set excel_sheet2 = excel_Book.Worksheets("sheet2")
    
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
    
    
    
    '    关闭EXCEL
    '    强制回收 Excel 进程
        
        excel_Book.Close (False) '关闭工作簿
    '    int geneID = System.GC.GetGeneration(excel_App)
    '    excel_App.Visible = False
        Set excel_sheet1 = Nothing
        Set excel_sheet2 = Nothing
        Set excel_Book = Nothing
        excel_App.Quit '结束EXCEL对象
        Set excel_App = Nothing '释放xlApp对象
    
    End Sub
    'D-证件号4 E-姓名5 H-秘钥8
    'CStr(excel_sheet1.Cells(2, 4))
    'CStr(excel_sheet1.Cells(2, 5))
    'CStr(excel_sheet1.Cells(2, 8))
    's_MD5str = Module_MD5.MD5("ABC", 32)
    
    Private Sub MD5_Click()
    
    '    重复部分
        Dim strxml_templ As String
    
        strxml_templ = strxml_templ + "IdentNo" + "&"
        strxml_templ = strxml_templ + "ChinNm" + "|"
    
        
    '   循环读取表格参数后进行拼接
        Dim flag As Integer
        Dim strxml_rebody As String
        strxml_rebody = strxml_templ
        flag = 2
        
        For i = 1 To 300
            strxml_rebody = strxml_templ
            strxml_rebody = Replace(strxml_rebody, "IdentNo", CStr(excel_sheet1.Cells(flag, 4)))
            strxml_rebody = Replace(strxml_rebody, "ChinNm", CStr(excel_sheet1.Cells(flag, 5)))
    
            strxml_body = strxml_body + strxml_rebody
            
    '    逻辑判断读取行数
            flag = flag + 1
            
            If Cells(flag, 1) = "" Then
                Exit For
            End If
           
        Next i
    
        strxml_rebody = strxml_body + CStr(excel_sheet1.Cells(2, 8))
        
    '    MsgBox strxml_rebody
    
        s_MD5str = Module_MD5.MD5(strxml_rebody, 32)
        
    ''    关闭EXCEL
    '    excel_Book.Close (False) '关闭工作簿
    '    excel_App.Visible = False
    '    excel_App.Quit '结束EXCEL对象
    '    Set excel_sheet1 = Nothing
    '    Set excel_Book = Nothing
    '    Set excel_App = Nothing '释放xlApp对象
    End Sub
    
    Private Sub Text1_Click()
    
    '选中文本框中全部内容
    'MsgBox "abc"
        With Text1
            .SelStart = 0
            .SelLength = Len(Text1.Text)
            '让文本框获取焦点
            .SetFocus
        End With
    
    End Sub
    
    Private Sub 单笔港澳台居民来往大陆通行证信息核查_Click()
    
    '    Set excel_App = CreateObject("excel.application")
    '    Set excel_Book = excel_App.Workbooks.Open(App.Path + "\MD5.xls")
    '    Set excel_sheet1 = excel_Book.Worksheets("sheet1")
    '    Set excel_sheet2 = excel_Book.Worksheets("sheet2")
        
    '    excel_sheet2.Cells(3, 1) = "TEST"
    
        strxml = "<service>" + Chr(10) + Chr(13)
        
    '    HEAD字符串拼接
        strxml_head = Chr(9) + "<Head>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<SvcCd>" + CStr(excel_sheet2.Cells(2, 1)) + "</SvcCd>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<ChanlCd>" + CStr(excel_sheet2.Cells(2, 2)) + "</ChanlCd>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<Mac />" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<CnsmrSysNo>" + CStr(excel_sheet2.Cells(2, 3)) + "</CnsmrSysNo>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<CnsmrNodeNo>" + CStr(excel_sheet2.Cells(2, 4)) + "</CnsmrNodeNo>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<CnsmrSysEgShrtNm>" + CStr(excel_sheet2.Cells(2, 5)) + "</CnsmrSysEgShrtNm>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<TranDt>" + CStr(excel_sheet2.Cells(2, 6)) + "</TranDt>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<TranTm>" + CStr(excel_sheet2.Cells(2, 7)) + "</TranTm>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<MsgVerNo>" + CStr(excel_sheet2.Cells(2, 8)) + "</MsgVerNo>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<MsgTp>" + CStr(excel_sheet2.Cells(2, 9)) + "</MsgTp>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<SvcVerNo>" + CStr(excel_sheet2.Cells(2, 10)) + "</SvcVerNo>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<GlbNo>" + CStr(excel_sheet2.Cells(2, 11)) + "</GlbNo>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<RqsSeqNo>" + CStr(excel_sheet2.Cells(2, 12)) + "</RqsSeqNo>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<CharSet>utf-8</CharSet>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<DgtSgnDsc>" + CStr(excel_sheet2.Cells(2, 13)) + "</DgtSgnDsc>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<SgnTp>" + CStr(excel_sheet2.Cells(2, 14)) + "</SgnTp>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<UsrLng />" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<InstNo />" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<TlrNo />" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + Chr(9) + "<SrcCnsmrSysNo>" + CStr(excel_sheet2.Cells(2, 15)) + "</SrcCnsmrSysNo>" + Chr(10) + Chr(13)
        strxml_head = strxml_head + Chr(9) + "</Head>" + Chr(10) + Chr(13)
        
    '   BODY字符串拼接
        strxml_body = Chr(9) + "<Body>" + Chr(10) + Chr(13)
        strxml_body = strxml_body + Chr(9) + Chr(9) + "<CustNo1>" + CStr(excel_sheet2.Cells(5, 1)) + "</CustNo1>" + Chr(10) + Chr(13)
        strxml_body = strxml_body + Chr(9) + Chr(9) + "<CustNo2>" + CStr(excel_sheet2.Cells(5, 2)) + "</CustNo2>" + Chr(10) + Chr(13)
        
    '    重复部分
        Dim strxml_templ As String
        strxml_templ = strxml_templ + Chr(9) + Chr(9) + "<BusTp>BusTpValue</BusTp>" + Chr(10) + Chr(13)
        strxml_templ = strxml_templ + Chr(9) + Chr(9) + "<CtznTp>CtznTpValue</CtznTp>" + Chr(10) + Chr(13)
        strxml_templ = strxml_templ + Chr(9) + Chr(9) + "<AreaNo>AreaNoValue</AreaNo>" + Chr(10) + Chr(13)
        strxml_templ = strxml_templ + Chr(9) + Chr(9) + "<IdentNo>IdentNoValue</IdentNo>" + Chr(10) + Chr(13)
        strxml_templ = strxml_templ + Chr(9) + Chr(9) + "<ChinNm>ChinNmValue</ChinNm>" + Chr(10) + Chr(13)
        strxml_templ = strxml_templ + Chr(9) + Chr(9) + "<BrthDt>BrthDtValue</BrthDt>" + Chr(10) + Chr(13)
        strxml_templ = strxml_templ + Chr(9) + Chr(9) + "<IdentVldDt>IdentVldDtValue</IdentVldDt>" + Chr(10) + Chr(13)
        
    '   循环读取表格参数后进行拼接
        Dim flag As Integer
        Dim strxml_rebody As String
        strxml_rebody = strxml_templ
        flag = 2
        
        For i = 1 To 1
            strxml_rebody = strxml_templ
            strxml_rebody = Replace(strxml_rebody, "BusTpValue", CStr(excel_sheet1.Cells(flag, 1)))
            strxml_rebody = Replace(strxml_rebody, "CtznTpValue", CStr(excel_sheet1.Cells(flag, 2)))
            strxml_rebody = Replace(strxml_rebody, "AreaNoValue", CStr(excel_sheet1.Cells(flag, 3)))
            strxml_rebody = Replace(strxml_rebody, "IdentNoValue", CStr(excel_sheet1.Cells(flag, 4)))
            strxml_rebody = Replace(strxml_rebody, "ChinNmValue", CStr(excel_sheet1.Cells(flag, 5)))
            strxml_rebody = Replace(strxml_rebody, "BrthDtValue", CStr(excel_sheet1.Cells(flag, 6)))
            strxml_rebody = Replace(strxml_rebody, "IdentVldDtValue", CStr(excel_sheet1.Cells(flag, 7)))
            strxml_body = strxml_body + strxml_rebody
            
    '    逻辑判断读取行数
            flag = flag + 1
            
            If Cells(flag, 1) = "" Then
                Exit For
            End If
           
        Next i
    
        strxml_body = strxml_body + Chr(9) + "</Body>" + Chr(10) + Chr(13)
    
        strxml = strxml + strxml_head + strxml_body + "</service>"
    
    '    设置单元格的值,输出生成的XLM
    '    Sheets("公民身份证件信息核查").TextBox1.Text = strxml
        s_MD5str = strxml
        
    '    '    关闭EXCEL
    '    excel_Book.Close (False) '关闭工作簿
    '    excel_App.Visible = False
    '    excel_App.Quit '结束EXCEL对象
    '    Set excel_sheet1 = Nothing
    '    Set excel_sheet2 = Nothing
    '    Set excel_Book = Nothing
    '    Set excel_App = Nothing '释放xlApp对象
    End Sub
    
    Private Sub 确定生成_Click()
    'MsgBox MD5("ABC", 32)
    'cell_1 = CStr(Cells(2, 1))
    'cell_2 = CStr(Cells(2, 2))
    'cell_3 = CStr(Cells(2, 3))
    'cell_4 = CStr(Cells(2, 4))
    'cell_5 = CStr(Cells(2, 5))
    'cell_6 = CStr(Cells(2, 6))
    'cell_7 = CStr(Cells(2, 7))
    'cell_8 = CStr(Cells(2, 8))
    
    'MsgBox s_MD5str
    
    Text1.Text = s_MD5str
    
    End Sub
    

    使用VB进行MD5加密的代码

    这里不用纠结于代码中的具体算法了,只需要调用下面代码即可,例:Module_MD5.MD5(strxml_rebody, 32)

    Private Const BITS_TO_A_BYTE = 8
    Private Const BYTES_TO_A_WORD = 4
    Private Const BITS_TO_A_WORD = 32
     
    Private m_lOnBits(30)
    Private m_l2Power(30)
     
    Private Function LShift(lValue, iShiftBits)
    If iShiftBits = 0 Then
    LShift = lValue
    Exit Function
    ElseIf iShiftBits = 31 Then
    If lValue And 1 Then
    LShift = &H80000000
    Else
    LShift = 0
    End If
    Exit Function
    ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
    Err.Raise 6
    End If
     
    If (lValue And m_l2Power(31 - iShiftBits)) Then
    LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
    Else
    LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
    End If
    End Function
     
    Private Function RShift(lValue, iShiftBits)
    If iShiftBits = 0 Then
    RShift = lValue
    Exit Function
    ElseIf iShiftBits = 31 Then
    If lValue And &H80000000 Then
    RShift = 1
    Else
    RShift = 0
    End If
    Exit Function
    ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
    Err.Raise 6
    End If
     
    RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)
     
    If (lValue And &H80000000) Then
    RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
    End If
    End Function
     
    Private Function RotateLeft(lValue, iShiftBits)
    RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
    End Function
     
    Private Function AddUnsigned(lX, lY)
    Dim lX4
    Dim lY4
    Dim lX8
    Dim lY8
    Dim lResult
     
    lX8 = lX And &H80000000
    lY8 = lY And &H80000000
    lX4 = lX And &H40000000
    lY4 = lY And &H40000000
     
    lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)
     
    If lX4 And lY4 Then
    lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
    ElseIf lX4 Or lY4 Then
    If lResult And &H40000000 Then
    lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
    Else
    lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
    End If
    Else
    lResult = lResult Xor lX8 Xor lY8
    End If
     
    AddUnsigned = lResult
    End Function
     
    Private Function md5_F(x, y, z)
    md5_F = (x And y) Or ((Not x) And z)
    End Function
     
    Private Function md5_G(x, y, z)
    md5_G = (x And z) Or (y And (Not z))
    End Function
     
    Private Function md5_H(x, y, z)
    md5_H = (x Xor y Xor z)
    End Function
     
    Private Function md5_I(x, y, z)
    md5_I = (y Xor (x Or (Not z)))
    End Function
     
    Private Sub md5_FF(a, b, c, d, x, s, ac)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
    End Sub
     
    Private Sub md5_GG(a, b, c, d, x, s, ac)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
    End Sub
     
    Private Sub md5_HH(a, b, c, d, x, s, ac)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
    End Sub
     
    Private Sub md5_II(a, b, c, d, x, s, ac)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
    End Sub
     
    Private Function ConvertToWordArray(sMessage)
    Dim lMessageLength
    Dim lNumberOfWords
    Dim lWordArray()
    Dim lBytePosition
    Dim lByteCount
    Dim lWordCount
     
    Const MODULUS_BITS = 512
    Const CONGRUENT_BITS = 448
     
    lMessageLength = Len(sMessage)
     
    lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
    ReDim lWordArray(lNumberOfWords - 1)
     
    lBytePosition = 0
    lByteCount = 0
    Do Until lByteCount >= lMessageLength
    lWordCount = lByteCount \ BYTES_TO_A_WORD
    lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
    lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
    lByteCount = lByteCount + 1
    Loop
     
    lWordCount = lByteCount \ BYTES_TO_A_WORD
    lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
     
    lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)
     
    lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
    lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
     
    ConvertToWordArray = lWordArray
    End Function
     
    Private Function WordToHex(lValue)
    Dim lByte
    Dim lCount
     
    For lCount = 0 To 3
    lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
    WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
    Next
    End Function
     
    Public Function MD5(sMessage, stype)
    m_lOnBits(0) = CLng(1)
    m_lOnBits(1) = CLng(3)
    m_lOnBits(2) = CLng(7)
    m_lOnBits(3) = CLng(15)
    m_lOnBits(4) = CLng(31)
    m_lOnBits(5) = CLng(63)
    m_lOnBits(6) = CLng(127)
    m_lOnBits(7) = CLng(255)
    m_lOnBits(8) = CLng(511)
    m_lOnBits(9) = CLng(1023)
    m_lOnBits(10) = CLng(2047)
    m_lOnBits(11) = CLng(4095)
    m_lOnBits(12) = CLng(8191)
    m_lOnBits(13) = CLng(16383)
    m_lOnBits(14) = CLng(32767)
    m_lOnBits(15) = CLng(65535)
    m_lOnBits(16) = CLng(131071)
    m_lOnBits(17) = CLng(262143)
    m_lOnBits(18) = CLng(524287)
    m_lOnBits(19) = CLng(1048575)
    m_lOnBits(20) = CLng(2097151)
    m_lOnBits(21) = CLng(4194303)
    m_lOnBits(22) = CLng(8388607)
    m_lOnBits(23) = CLng(16777215)
    m_lOnBits(24) = CLng(33554431)
    m_lOnBits(25) = CLng(67108863)
    m_lOnBits(26) = CLng(134217727)
    m_lOnBits(27) = CLng(268435455)
    m_lOnBits(28) = CLng(536870911)
    m_lOnBits(29) = CLng(1073741823)
    m_lOnBits(30) = CLng(2147483647)
     
    m_l2Power(0) = CLng(1)
    m_l2Power(1) = CLng(2)
    m_l2Power(2) = CLng(4)
    m_l2Power(3) = CLng(8)
    m_l2Power(4) = CLng(16)
    m_l2Power(5) = CLng(32)
    m_l2Power(6) = CLng(64)
    m_l2Power(7) = CLng(128)
    m_l2Power(8) = CLng(256)
    m_l2Power(9) = CLng(512)
    m_l2Power(10) = CLng(1024)
    m_l2Power(11) = CLng(2048)
    m_l2Power(12) = CLng(4096)
    m_l2Power(13) = CLng(8192)
    m_l2Power(14) = CLng(16384)
    m_l2Power(15) = CLng(32768)
    m_l2Power(16) = CLng(65536)
    m_l2Power(17) = CLng(131072)
    m_l2Power(18) = CLng(262144)
    m_l2Power(19) = CLng(524288)
    m_l2Power(20) = CLng(1048576)
    m_l2Power(21) = CLng(2097152)
    m_l2Power(22) = CLng(4194304)
    m_l2Power(23) = CLng(8388608)
    m_l2Power(24) = CLng(16777216)
    m_l2Power(25) = CLng(33554432)
    m_l2Power(26) = CLng(67108864)
    m_l2Power(27) = CLng(134217728)
    m_l2Power(28) = CLng(268435456)
    m_l2Power(29) = CLng(536870912)
    m_l2Power(30) = CLng(1073741824)
     
     
    Dim x
    Dim k
    Dim AA
    Dim BB
    Dim CC
    Dim DD
    Dim a
    Dim b
    Dim c
    Dim d
     
    Const S11 = 7
    Const S12 = 12
    Const S13 = 17
    Const S14 = 22
    Const S21 = 5
    Const S22 = 9
    Const S23 = 14
    Const S24 = 20
    Const S31 = 4
    Const S32 = 11
    Const S33 = 16
    Const S34 = 23
    Const S41 = 6
    Const S42 = 10
    Const S43 = 15
    Const S44 = 21
     
    x = ConvertToWordArray(sMessage)
     
    a = &H67452301
    b = &HEFCDAB89
    c = &H98BADCFE
    d = &H10325476
     
    For k = 0 To UBound(x) Step 16
    AA = a
    BB = b
    CC = c
    DD = d
     
    md5_FF a, b, c, d, x(k + 0), S11, &HD76AA478
    md5_FF d, a, b, c, x(k + 1), S12, &HE8C7B756
    md5_FF c, d, a, b, x(k + 2), S13, &H242070DB
    md5_FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
    md5_FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
    md5_FF d, a, b, c, x(k + 5), S12, &H4787C62A
    md5_FF c, d, a, b, x(k + 6), S13, &HA8304613
    md5_FF b, c, d, a, x(k + 7), S14, &HFD469501
    md5_FF a, b, c, d, x(k + 8), S11, &H698098D8
    md5_FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
    md5_FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
    md5_FF b, c, d, a, x(k + 11), S14, &H895CD7BE
    md5_FF a, b, c, d, x(k + 12), S11, &H6B901122
    md5_FF d, a, b, c, x(k + 13), S12, &HFD987193
    md5_FF c, d, a, b, x(k + 14), S13, &HA679438E
    md5_FF b, c, d, a, x(k + 15), S14, &H49B40821
     
    md5_GG a, b, c, d, x(k + 1), S21, &HF61E2562
    md5_GG d, a, b, c, x(k + 6), S22, &HC040B340
    md5_GG c, d, a, b, x(k + 11), S23, &H265E5A51
    md5_GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
    md5_GG a, b, c, d, x(k + 5), S21, &HD62F105D
    md5_GG d, a, b, c, x(k + 10), S22, &H2441453
    md5_GG c, d, a, b, x(k + 15), S23, &HD8A1E681
    md5_GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
    md5_GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
    md5_GG d, a, b, c, x(k + 14), S22, &HC33707D6
    md5_GG c, d, a, b, x(k + 3), S23, &HF4D50D87
    md5_GG b, c, d, a, x(k + 8), S24, &H455A14ED
    md5_GG a, b, c, d, x(k + 13), S21, &HA9E3E905
    md5_GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
    md5_GG c, d, a, b, x(k + 7), S23, &H676F02D9
    md5_GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
     
    md5_HH a, b, c, d, x(k + 5), S31, &HFFFA3942
    md5_HH d, a, b, c, x(k + 8), S32, &H8771F681
    md5_HH c, d, a, b, x(k + 11), S33, &H6D9D6122
    md5_HH b, c, d, a, x(k + 14), S34, &HFDE5380C
    md5_HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
    md5_HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
    md5_HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
    md5_HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
    md5_HH a, b, c, d, x(k + 13), S31, &H289B7EC6
    md5_HH d, a, b, c, x(k + 0), S32, &HEAA127FA
    md5_HH c, d, a, b, x(k + 3), S33, &HD4EF3085
    md5_HH b, c, d, a, x(k + 6), S34, &H4881D05
    md5_HH a, b, c, d, x(k + 9), S31, &HD9D4D039
    md5_HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
    md5_HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
    md5_HH b, c, d, a, x(k + 2), S34, &HC4AC5665
     
    md5_II a, b, c, d, x(k + 0), S41, &HF4292244
    md5_II d, a, b, c, x(k + 7), S42, &H432AFF97
    md5_II c, d, a, b, x(k + 14), S43, &HAB9423A7
    md5_II b, c, d, a, x(k + 5), S44, &HFC93A039
    md5_II a, b, c, d, x(k + 12), S41, &H655B59C3
    md5_II d, a, b, c, x(k + 3), S42, &H8F0CCC92
    md5_II c, d, a, b, x(k + 10), S43, &HFFEFF47D
    md5_II b, c, d, a, x(k + 1), S44, &H85845DD1
    md5_II a, b, c, d, x(k + 8), S41, &H6FA87E4F
    md5_II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
    md5_II c, d, a, b, x(k + 6), S43, &HA3014314
    md5_II b, c, d, a, x(k + 13), S44, &H4E0811A1
    md5_II a, b, c, d, x(k + 4), S41, &HF7537E82
    md5_II d, a, b, c, x(k + 11), S42, &HBD3AF235
    md5_II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
    md5_II b, c, d, a, x(k + 9), S44, &HEB86D391
     
    a = AddUnsigned(a, AA)
    b = AddUnsigned(b, BB)
    c = AddUnsigned(c, CC)
    d = AddUnsigned(d, DD)
    Next
     
    If stype = 32 Then
    MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
    Else
    MD5 = LCase(WordToHex(b) & WordToHex(c))
    End If
    End Function
    Sub test()
    MsgBox MD5("a", 16) '16位加密
    MsgBox MD5("a", 32) '32位加密
    End Sub
    
    展开全文
  • VB.NET DataTable数据条件筛选

    千次阅读 2018-10-09 10:43:04
    DIm dtNew as DataTable=dtDataTable.Clone '假设你现已拥有某一个数据表 dtDataTable,现在你需要从dtDataTable中筛选出部分符合你心意的数据,我们先申明新的空数据表 dtNew Dim dv As DataView = New ...
  • Access操作与SQL语句:重复数据处理

    千次阅读 2020-05-05 14:58:59
    在EXCEL中处理重复数据有如下几种方法: ...在新建简单查询时,对话框中就有一项“查找重复项查询向导”功能,那么,就可以使用这个功能来查找数据重复项。 以“订购明细表”中重复的用户ID为例...
  • 内容导航:Q1:在c语言中输入数组两个数组,查找重复元素并输出怎么写啊可以一次读入N个数据。可以考虑以回车结束读入的一组。参考如下写法:#include "stdio.h"#define Max 100int X[Max]={0,},Y[Max]={0,};int ...
  • sql语句要select 某字段值不重复数据,使用distinct关键字。例如从 “name” 列中仅选取唯一不同的值使用以下SQL: SELECT DISTINCT name FROM table;
  • 如何查询出某个字段重复出现两次以上的数据如何查询出某个字段重复出现两次以上的数据@TOC 方法: SELECT * FROM 表 WHERE 字段 IN (SELECT 字段 FROM 表 GROUP BY 字段 HAVING COUNT(1) > 1)
  • VB 删除数组中的重复元素

    千次阅读 2013-02-14 19:43:27
    VB 删除数组中的重复元素,当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。并且返回结果数组。以下这个函数只支持一维数组。 Function Array_unique(Arr As Variant) As Variant Arr = QuickSort...
  • VB检测数组中的重复元素

    千次阅读 2013-01-11 14:52:01
    '需要点击菜单:工程->引用->Microsoft Scripting RuntimePublic Function HasRepeat(ByRef arr() As String) As Boolean Dim dict As Dictionary Set dict = New Dictionary Dim i As Variant ...
  • 输入测试数据 (每行一个参数)如何理解测试数据?   class Solution { public: /** * @param nums: a list of integers * @return: return a list of integers */ vector<int> findDuplicates(vector...
  • Excel VBA高级编程 -根据日期查找数据

    千次阅读 2020-08-11 22:43:20
    功能说明: ...2、重复数据自动求和 附上代码 Sub lqxs() Dim Cnn As Object, SQL$, shnm$, arr, i&, j& Set Cnn = CreateObject("Adodb.Connection") shnm = Sheet1.Name...
  • 好久没写这种代码了,特此记录一下 需求 判断集合中是否存在重复元素(我项目中的一个实际需求),需求如下: { 1, 2, 3, 5, 4, 3, 7, 2, 0, 1, 3, 2, 0, 2 } ------&...查找集合中所有的重复元素,并...
  • 示例数据表 代码1 去除重复值(RemoveDuplicates)方法 代码2 代码3 示例 如图所示,该表为某村人口登记表。现希望得知有哪些户的居民已登记,因而希望获取“户号”列的不重复值,并存储在J列。该如何用VBA实现...
  • 三、树的VB6语言实现以及显示 一、树的C#语言实现以及显示 1树的存储结构设计 一旦一个工程选择了用C#来完成,那么肯定意味着这是一个真实的应用项目。在现实中的应用项目中,树的存储基本都是用双亲表示法。在...
  • VB ListBox 添加不重复的值,当列表中已经存在该值即不再添加。 Private Function AddList(List As ListBox, Str As String) As Boolean Dim I As Long For I = 0 To List.ListCount - 1 If List.List(I) = Str ...
  • 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*frompeople wherepeopleIdin(selectpeopleIdfrompeopleg...
  • vb读取excel内容。我想获取的是这样的。在excel表格中搜索B列内容为“32KP”对应的E列的内容比如B17为“32KP”则读取E17的内容到text1中。 我是这样读取表格的 Dim ExcelApp, oBook, a, c Set ExcelApp = ...
  • 代码克隆是非常相似的独立代码片段。 在已开发一段时间的应用程序中,常会出现这种现象。...你可以查找特定片段的克隆,也可以查找解决方案中的所有克隆。 除了发现直接复制的片段外,克隆分析工具还可以找
  •  //对重复数据进行筛选  Hashtable ht = new Hashtable();  foreach (DataRow dr in tb.Rows)  {  string s = dr["originalName"];   转载于:...
  • vb.net 使用ado There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and fo...
  • 字典去除重复项问题

    2021-01-17 17:44:44
    首先,我像利用字典算法进行去除重复项。然后,由于清单中“名称”和“型号”都有可能相同,但是“名称”+“型号”是唯一的,所以需要对“名称”+“型号”输入字典,从而去除重复项。最后问题是,合并过程中“型号”...
  • VB字符串处理大全

    万次阅读 2018-09-16 11:56:53
    1 VBA中的字符串 2 VBA中处理字符串的函数  2.1 比较字符串 ... 2.6 查找字符串  2.7 提取字符/字符串  2.8 删除空格  2.9 返回字符代码  2.10 返回数值代表的相应字符  2.11 使用字节的函数  ...
  • 按F1获取帮助,你会了吗?... 字符串(System.String类)是 Unicode 字符的有序集合,用于表示文本,即一系列 Unicode 字符。是基本类型中唯一的引用类型。 System.String类有多个构造...当然,为了兼容老版本的VB6.0,...
  • VB操作EXCEL表的常用方法

    万次阅读 多人点赞 2019-01-07 17:39:12
    VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。...
  • VB读写dbf格式数据库

    千次阅读 2019-07-10 17:43:49
    查找控制面板中ODBC数据表驱动列举,其第一项就是dBase(dbf)数据库驱动,但估计是因为版本太老,它是不能支持读写dbf的程序运行的。 读写dbf的代码如下: Dim CNN As New ADODB.Connection Dim STRSQL As ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,608
精华内容 3,443
关键字:

vb查找重复数据