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

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

时间: 2024-10-15 22:46:29

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

用SQL存储过程生成唯一单据号

在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如销售单据号,盘点单据号,进货单据号等),利用数据库锁的原理,先看一下SQL语句: CREATE PROC [dbo].[getlsh]     @lx VARCHAR(6) ,     @lsh VARCHAR(30) OUTPUT AS     BEGIN  --启动事务处理         [email protected]_poin

SqlServer 可更新订阅中在订阅库并发获取最大单据号测试及解决法案!

说明: 很多交易的系统都需要单据号,而单据号按顺序并发获取又是一件头疼的事!~ 一般单据号格式为:前缀+日期+编号(如:KK20150501000001) 现在模拟测试,数据库中的单据号作为一张表处理. 数据库单据号表(Billnumber)存储每个账号及其最大的单据号总共一条记录 单据号是组合而成的字符串,后6位为序号. 获取单据号的存储过程: EXEC [dbo].[GetBillnumber_Test]@Account='Account',@Billnumber NVARCHAR(20)O

基于mysql的单据号生成(前缀+日期+自增id+后缀)

介绍 本次采用mysql处理,性能不是很好,对于高并发有要求的建议不要采用公司一个小项目,需要生成一个单据号,格式为: 日期 + 每日重新自增号,自己考虑了一下每日自增需要考虑并发和持久问题,两种数据库redis和mysql由于项目较小,所以没有redis因为这个增加一个redis好像有点不值得,所以采用mysql作为持久化处理,一下思路也是借鉴了网上的许多想法 源码 源码查看规则源码位置: blog-study:module-utils:work-no 欢迎大家随时批评指正 思路 首先根据需求

JavaScript基础 使用+号连接两个字符串

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

分布式系统中的必备良药 —— 全局唯一单据号生成

阅读目录 单据号是指什么 和唯一ID的不同是什么 为什么需要全局唯一单据号生成程序 实现的方式有哪些 笔者推荐的方式 结语 一.单据号是指什么 我们作为一个软件系统,肯定到处充满着各种单据,也必然需要有各种单据号与之对应.比如:电商行业的订单号.支付流水号.退款单号等等.SCM的采购单号.进货单号.出货单号.盘点单号等.在一个企业内部或者一个2C的平台,无法避免的需要通过某个单据号来进行沟通.所以一个好的单据号必然是便于沟通的,简单来说优先级就是 好记 > 好输入 > 好看,当然也是越短越好.

.Net常用技巧_生成单据号

自己用的,没整理,代码比较乱,请不要学我. using System; using System.Collections.Generic; using System.Text; using EXDataControl; using System.Data; using System.Data.SqlClient; using Utility; namespace MyTool { public class CreateDocNo { /// <summary> /// 获取单号 /// <

PHP单据号操作

此处约定单据号格式为“ysd201604200001”,单据代码,日期,四位数字 1 $conn = MySqlPdoHelper::getConnection(); 2 3 $billCode = 'ysd'; 4 5 //获取今日的验收单编号数量 6 $now = date('Ymd'); 7 $reg = '^'. $billCode. $now; 8 $sql = 'SELECT count(1) FROM tb_yanshoudan_title WHERE bill_number RE

mysql高效获取两张表共同字段的交集数据

问题: 例如下面两站表A,B.A表和B表分别有5-10w数据.A表结构如下:id bid name title publisher extraB表结构如下id bid name title publisher A出版社也为很多人出版了书籍,B出版社也为很多人出版了书籍,有sql语句找出这两个出版社为那些人 共同出版书籍,用innerjoin太慢,有没有什么更好的办法? 解答一: 由于不知道你表的索引情况,至于用join还是in和exists不太好说,理论上讲,exists最快.in次之.join

两种方法删除ArrayList里重复元素

方法一: /** List order not maintained **/ public static void removeDuplicate(ArrayList arlList) { HashSet h = new HashSet(arlList); arlList.clear(); arlList.addAll(h); } 方法二: /** List order maintained **/ public static void removeDuplicateWithOrder(Arra