码迷,mamicode.com
首页 > 其他好文 > 详细

VBA根据单据号从两个不同的sheet里筛选数据

时间:2014-09-23 10:19:04      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:ar   for   数据   sp   c   r   bs   as   不同的   

Public Sub Filter()
‘ sheet1 是从乾坤里导出的总表
‘ sheet2 是自己维护的未开票的提单号
‘ 此函数是用来自动筛选匹配提单号,如果已经未开票的提单号则在sheet1,则sheet1的S列的值为 1 ,否则为 0
‘ 只要把已经开票的提单号拷贝到sheet2 的E列就可以了,sheet1 从乾坤导出来的格式不变化

 

    ‘If Workbooks(1).Worksheets("sheet1") Is Nothing Then
       ‘MsgBox "sheet1不存在"
    ‘Else
       ‘MsgBox "sheet1存在"
    ‘End If
   
   
       
       
    Dim Sheet1RowCount As Integer
    Dim Sheet2RowCount As Integer
    Sheet1RowCount = Sheet1.UsedRange.Rows.Count  ‘乾坤导出的excel
    Sheet2RowCount = Sheet2.UsedRange.Rows.Count  ‘自己维护的已经开票的excel
    Dim SourceData As String
    Dim TargetData As String
    Dim IsFound As String
    IsFound = "NO"   ‘没有匹配到

    Dim i As Integer   ‘外循环的次数
    Dim j As Integer   ‘内循环的次数
    Dim k As Integer
    Dim p As Integer
   
   
   
    ‘不知道为啥一次循环删除不了所有的空格
    For p = 1 To 20
        Sheet2RowCount = Sheet2.UsedRange.Rows.Count  ‘自己维护的已经开票的excel
        For k = 1 To Sheet2RowCount
            If RTrim(LTrim(Sheet2.Cells(k, 5).Value)) = "" Then
                Sheet2.Rows(k).Delete
            End If
        Next
    Next

   

   
    Sheet2RowCount = Sheet2.UsedRange.Rows.Count  ‘自己维护的已经开票的excel
   
    For i = 4 To Sheet1RowCount   ‘乾坤导出的excel
        SourceData = Sheet1.Cells(i, 5).Value
        For j = 1 To Sheet2RowCount
           TargetData = Sheet2.Cells(j, 5).Value  ‘自己维护的已经开票的excel
           If SourceData = TargetData Then
                 Sheet1.Cells(i, 19).Value = 1   ‘匹配成功
                 IsFound = "YES"
           Else
                 Sheet1.Cells(i, 19).Value = 0    ‘匹配失败
                 IsFound = "NO"
           End If
           If IsFound = "YES" Then
                Exit For
           End If
        Next
    Next
   
   
    ‘匹配成功后拷贝到sheet3,sheet4
    Dim r As Integer
    Dim s As Integer
    r = 0
    s = 0
   
   
    For i = 4 To Sheet1RowCount   ‘乾坤导出的excel
        If Sheet1.Cells(i, 19) = 1 Then
            r = r + 1
            Sheet1.Rows(i).Copy Sheet3.Rows(r)
        Else
            s = s + 1
            Sheet1.Rows(i).Copy Sheet4.Rows(s)
        End If
    Next
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
   

 

VBA根据单据号从两个不同的sheet里筛选数据

标签:ar   for   数据   sp   c   r   bs   as   不同的   

原文地址:http://blog.csdn.net/waterxcfg304/article/details/39494399

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!