应收账数据提取-涉及查询

image.png

image.png

如图所示,我们需要根据数据提取里面的金额和开票单位,到应收明细里面去查找对应的数据,要求是开票单位可以对的上,如果有应收明细开票金额是跟数据提取里面的金额一致,直接提取,没有的话就查找所有两两相加或者三个相加等一系列可能的情况,并提取数据,进行标记。
主要的思想如下:提供一张筛选筛选客户名称的表格,用于将单个客户放进去,最这个表格进行操作;将开票金额列的金额放入数组中,进行循环遍历,以找到符合要求的数据,放入数据提起表格中。


image.png
Sub tiqushuju()
Dim i, j, k, h, l, m, n, p, q, o, s, a, r, c, b As Integer
Dim arr()

b = Sheets("数据提取").Range("b65533").End(xlUp).Row
For i = 2 To 2

    '按照客户筛选出信息,放入筛选客户表
    Sheets("筛选客户名称").Columns("A:N").Delete Shift:=xlToLeft
    Sheets("应收明细").Rows("1:1").AutoFilter
    Sheets("应收明细").Range("$A$1:$N$65533").AutoFilter Field:=4, Criteria1:=Sheets("数据提取").Range("b" & i)
    j = Sheets("应收明细").Range("d65533").End(xlUp).Row
    Sheets("应收明细").Range("A1:N" & j).Copy Sheets("筛选客户名称").Range("A1")
    Sheets("筛选客户名称").Columns("A:N").EntireColumn.AutoFit
    
    '筛选出金额直接对等的数据
    Sheets("筛选客户名称").Rows("1:1").AutoFilter
    Sheets("筛选客户名称").Range("$A$1:$N$8508").AutoFilter Field:=2, Criteria1:=Sheets("数据提取").Range("a" & i)
    
    
    '将金额直接对等的数据复制出来,并在前面标记为1
    k = Sheets("筛选客户名称").Range("a65533").End(xlUp).Row
    
    If k > 1 Then
        h = Sheets("数据提取").Range("i65533").End(xlUp).Row
        Sheets("筛选客户名称").Range("A1:N" & k).Copy Sheets("数据提取").Range("f" & h + 1)
        h = Sheets("数据提取").Range("i65533").End(xlUp).Row
        l = Sheets("数据提取").Range("e65533").End(xlUp).Row
        Sheets("数据提取").Range("e" & l + 1 & ":" & "e" & h) = 1
        Sheets("数据提取").Range("d" & l + 1 & ":" & "d" & h) = Sheets("数据提取").Range("c" & i)
    
    '不存在单独的数据,进一步判断是否是因为里面有两个相加的和等于1的数据
    
    ElseIf k = 1 Then
        Sheets("筛选客户名称").Rows("1:1").AutoFilter
        
        n = Sheets("筛选客户名称").Range("d65533").End(xlUp).Row
        
        If n-1 >= 2 Then
            
            ReDim arr(1 To n - 1)
            For a = 1 To n - 1
                arr(a) = Sheets("筛选客户名称").Range("b" & a + 1).Value()
            Next
    
            '判断是否只存在两个值,且相加等于目标值
            If (UBound(arr) = 2) And (arr(1) + arr(2) = Sheets("数据提取").Range("a" & i)) Then
                
                h = Sheets("数据提取").Range("i65533").End(xlUp).Row
                Sheets("筛选客户名称").Range("A1:N3").Copy Sheets("数据提取").Range("f" & h + 1)
                h = Sheets("数据提取").Range("i65533").End(xlUp).Row
                l = Sheets("数据提取").Range("e65533").End(xlUp).Row
                Sheets("数据提取").Range("e" & l + 1 & ":" & "e" & h) = 2
                Sheets("数据提取").Range("d" & l + 1 & ":" & "d" & h) = Sheets("数据提取").Range("c" & i)
            
            
            ElseIf (UBound(arr) > 2) Then
                '判断是多于两个值,并且找到所有两个相加的等于目标值的数据
                For p = LBound(arr) To (UBound(arr) - 1)
                    For q = p + 1 To (UBound(arr))
                    
                        If arr(p) + arr(q) = Sheets("数据提取").Range("a" & i) Then
                            o = Sheets("数据提取").Range("i65533").End(xlUp).Row
                            Sheets("筛选客户名称").Range("A1:N1").Copy Sheets("数据提取").Range("f" & o + 1)
                            Sheets("筛选客户名称").Range("A" & p + 1 & ":N" & p + 1).Copy Sheets("数据提取").Range("f" & o + 2)
                            Sheets("筛选客户名称").Range("A" & q + 1 & ":N" & q + 1).Copy Sheets("数据提取").Range("f" & o + 3)
                            
                            s = Sheets("数据提取").Range("e65533").End(xlUp).Row
                            o = Sheets("数据提取").Range("i65533").End(xlUp).Row
                            Sheets("数据提取").Range("e" & s + 1 & ": e" & o) = 2
                            Sheets("数据提取").Range("d" & s + 1 & ": d" & o) = Sheets("数据提取").Range("c" & i)
        
                        End If
                    Next
                Next
                
                '三个数值相加
                For p = LBound(arr) To (UBound(arr) - 2)
                
                    For q = p + 1 To (UBound(arr) - 1)
                        
                        For r = q + 1 To (UBound(arr))
                            If arr(p) + arr(q) + arr(r) = Sheets("数据提取").Range("a" & i) Then
                            
                                o = Sheets("数据提取").Range("i65533").End(xlUp).Row
                                Sheets("筛选客户名称").Range("A1:N1").Copy Sheets("数据提取").Range("f" & o + 1)
                                Sheets("筛选客户名称").Range("A" & p + 1 & ":N" & p + 1).Copy Sheets("数据提取").Range("f" & o + 2)
                                Sheets("筛选客户名称").Range("A" & q + 1 & ":N" & q + 1).Copy Sheets("数据提取").Range("f" & o + 3)
                                Sheets("筛选客户名称").Range("A" & r + 1 & ":N" & r + 1).Copy Sheets("数据提取").Range("f" & o + 4)
                                
                                s = Sheets("数据提取").Range("e65533").End(xlUp).Row
                                o = Sheets("数据提取").Range("i65533").End(xlUp).Row
                                Sheets("数据提取").Range("e" & s + 1 & ": e" & o) = 3
                                Sheets("数据提取").Range("d" & s + 1 & ": d" & o) = Sheets("数据提取").Range("c" & i)
            
                            End If
                        Next
                    Next
                Next
                
                
                '4个数值相加
                'For c = LBound(arr) To (UBound(arr) - 3)
                    'For p = LBound(arr) To (UBound(arr) - 2)
                    
                        'For q = p + 1 To (UBound(arr) - 1)
                            
                            'For r = q + 1 To (UBound(arr))
                                'If arr(c) + arr(p) + arr(q) + arr(r) = Sheets("数据提取").Range("a" & i) Then
                                
                                    'o = Sheets("数据提取").Range("i65533").End(xlUp).Row
                                    'Sheets("筛选客户名称").Range("A1:N1").Copy Sheets("数据提取").Range("f" & o + 1)
                                    'Sheets("筛选客户名称").Range("A" & c + 1 & ":N" & c + 1).Copy Sheets("数据提取").Range("f" & o + 2)
                                    'Sheets("筛选客户名称").Range("A" & p + 1 & ":N" & p + 1).Copy Sheets("数据提取").Range("f" & o + 3)
                                    'Sheets("筛选客户名称").Range("A" & q + 1 & ":N" & q + 1).Copy Sheets("数据提取").Range("f" & o + 4)
                                    'Sheets("筛选客户名称").Range("A" & r + 1 & ":N" & r + 1).Copy Sheets("数据提取").Range("f" & o + 5)
                                    
                                    's = Sheets("数据提取").Range("e65533").End(xlUp).Row
                                    'o = Sheets("数据提取").Range("i65533").End(xlUp).Row
                                    'Sheets("数据提取").Range("e" & s + 1 & ": e" & o) = 4
                                    'Sheets("数据提取").Range("d" & s + 1 & ": d" & o) = Sheets("数据提取").Range("c" & i)
                
                                'End If
                            'Next
                        'Next
                    'Next
                'Next
                
            End If
            
            
        End If
    End If
Next




End Sub
    效果如下:
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容