Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3721|回复: 9

关于用宏检测同型号规格不同名称,跪求大神

[复制链接]
发表于 2020-5-27 11:23 | 显示全部楼层 |阅读模式
1学分
本帖最后由 hfeng0120 于 2020-5-27 16:05 编辑

问题1、以规格为准,出现一种规格2种名称
问题2、同一层内容,出现2项以上相同规格和名称的
以上问题请大神帮我想想宏怎么做,只要提示就行

求大神.zip

10.88 KB, 下载次数: 6

发表于 2020-5-27 13:22 | 显示全部楼层
Excel 文件 压缩一下 , 就可以上传

辅助列 countifs( 规格区域 , 规格 , 名称区域 , "<>"&名称 )
回复

使用道具 举报

 楼主| 发表于 2020-5-27 16:06 | 显示全部楼层
砂海 发表于 2020-5-27 13:22
Excel 文件 压缩一下 , 就可以上传

辅助列 countifs( 规格区域 , 规格 , 名称区域 , ""&名称 )

大神,我已经上传压缩包了,指导一下,感谢,最好是VBA
回复

使用道具 举报

发表于 2020-5-27 16:10 | 显示全部楼层
本帖最后由 hfwufanhf2006 于 2020-5-27 16:11 编辑

1、用字典,关键字是规格,而字典的exists能快速检查重复值;
     对于重复值的处理,可以借助数组或者第二个字典来区别存放细节数据;
2、这个问题与上面的问题是一个性质的,都可以用双字典或者字典+数组区分;
    比如双字典,下面写个大致的结构,实际代码要比这个复杂些:
    dim zd1    '字典1,记录数据的行号,如果是重复值,则记录重复的个数
    dim zd2    '字典2,记录重复的行号,格式 xx/yy/zz...中间用/分隔
    dim arr(1 to 1)     '数组,存储第二个数组的行号
    ....
    hs=i            '行号=循环参数
    if zd1.exists(关键字) then    '字典1存在,说明是重复的
     if zd2.exists(关键字) then  '字典2也存在,行号累加,用 xx/yy的格式
        arr=zd2(关键字)       '读取字典2的原数据
        arr(1)=arr(1) & "/"  & hs   '行号累加,中间用/分隔
        zd2(关键字)=arr       '把累加后的再写入字典2
        zd1(关键字)=zd1(关键字)+1   '字典1存储字典2的重复个数
      else
        arr(1)=zd1(关键字) & "/" hs   '字典2不存在,表示只有一个重复值,第一个行号记录在字典1中
        zd2(关键字)=arr       '把累加后的再写入字典2
        zd1(关键字)=2         '只有2个重复值,所以字典1的初始值是2
      endif
    else
      zd1(关键字)=hs           '如果字典1不存在,肯定不会重复,只记录字典1的行号,字典2不用处理
    endif

    总体上说,如果没有重复,第一个字典的值就是行号,如果重复第一个字典是重复个数,而行号则在第二个字典中存放,字典2就是字典1的扩展;
    而快速判断是否重复的方法就是检查字典2即可;

回复

使用道具 举报

 楼主| 发表于 2020-5-27 22:47 | 显示全部楼层
hfwufanhf2006 发表于 2020-5-27 16:10
1、用字典,关键字是规格,而字典的exists能快速检查重复值;
     对于重复值的处理,可以借助数组或者第 ...

谢谢大神专业的建议,但我基本看不懂TAT,是否直接复制到宏里使用?
回复

使用道具 举报

发表于 2020-5-28 09:24 | 显示全部楼层
本帖最后由 hfwufanhf2006 于 2020-5-28 09:26 编辑
hfeng0120 发表于 2020-5-27 22:47
谢谢大神专业的建议,但我基本看不懂TAT,是否直接复制到宏里使用?

不能,要根据实际修改。我下载了文件,你也没说具体干什么?只是说要检查,那么检查结果你打算怎么办?
所以我就把两种结果列示在后面列,如果你想用于其他用途,这个代码也不能用;
文件代码与前面我所讲有差别,但原理上差不多,都是双字典判断;

副本.rar

27.54 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2020-5-29 08:43 | 显示全部楼层
hfwufanhf2006 发表于 2020-5-28 09:24
不能,要根据实际修改。我下载了文件,你也没说具体干什么?只是说要检查,那么检查结果你打算怎么办?
...

非常感谢大神的指导,第一个问题:在整个工作表中检查同规格不同名称并列出(感谢,已帮我解决)
第二个问题:我之前没有表达清楚,同一层中不允许出现同规格、同名称的内容。
比如下面,前面带“1”的为一层,带“2”为另一层。同一层中不能出现名称和规格都相同的行(比如1-4和1-5是有问题的),但不同的层可以允许出现(比如1-4和2-2),这个问题和第一个问题一样在其他地方列出来就行,感谢了
物料从属关系物料产品名称物料产品型号物料产品规格物料数量
1微凹部分GDT1250-03F-00-2050031
1-1底板01加工件GDT1250-03F-012
1-2微凹涂布后墙板01加工件GDT1250-03F-041
1-3微凹涂布前墙板01加工件GDT1250-03F-031
1-4横撑01加工件GDT1250-03F-021
1-5横撑01加工件GDT1250-03F-021
2凹涂部分GDT1250-04F-00-205003
2-1微凹涂布前墙板01加工件GDT1250-03F-031
2-2横撑01加工件GDT1250-03F-021
2-3横撑01加工件GDT1250-03F-02A1
2-4横撑01加工件GDT1250-03F-02B1

回复

使用道具 举报

发表于 2020-5-29 10:40 | 显示全部楼层
hfeng0120 发表于 2020-5-29 08:43
非常感谢大神的指导,第一个问题:在整个工作表中检查同规格不同名称并列出(感谢,已帮我解决)
第二个 ...

看了你要求,我突然直接判断数组方法可能要简单些,所以就写了个数组方法。最后对比字典方法,半径八两,总体差不多吧;字典法逻辑要复杂些,代码简洁点,数组法逻辑简单,但你这两个问题需要两段重复的代码,总体略长一点点;
就速度而言,只要不是数据量很大(行数过万),两者差不多的,你自己选一个吧;
为了做全面测试,我把你源数据做了改动,如果你数据是真实的,需要还原;



副本.rar

32.22 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2020-5-29 15:14 | 显示全部楼层
hfwufanhf2006 发表于 2020-5-29 10:40
看了你要求,我突然直接判断数组方法可能要简单些,所以就写了个数组方法。最后对比字典方法,半径八两, ...

感谢大神的指导,完美解决我的问题。上次忘记我的清单还有可能不只是2层,可能有4、5个子层,实在是抱歉。比如下面的1-1-2和1-2-3,规格和名称完全一样,但不在同一子层,也是允许存在的,这时候不需要提示,感谢大神。 上次没有把这个情况说清楚,抱歉。


物料从属关系物料产品名称物料产品型号物料产品规格物料数量
1微凹部分GDT1250-03F-00-2050031
1-1组件1GDT1250-03F-0001
1-1-1微凹涂布后墙板01加工件GDT1250-03F-041
1-1-2微凹涂布前墙板01加工件GDT1250-03F-031
1-2组件2GDT1250-03F-0011
1-2-1横撑01加工件GDT1250-03F-021
1-2-2横撑01加工件GDT1250-03F-021
1-2-3微凹涂布前墙板01加工件GDT1250-03F-031
1-2-4横撑01加工件GDT1250-03F-021
1-2-5直线导轨(副)04标件HTSD-LG30EAP22-565E-G25-G60-凯特2
1-2-6直线导轨04标件HTSD-LG30EAP22-565E-G25-G60-凯特4
2凹涂部分GDT1250-04F-00-205003
2-1微凹涂布前墙板01加工件GDT1250-03F-031
2-2横撑01加工件GDT1250-03F-021
2-3横撑01加工件GDT1250-03F-02A1



副本222.zip

32.1 KB, 下载次数: 2

回复

使用道具 举报

发表于 2020-5-29 16:21 | 显示全部楼层
hfeng0120 发表于 2020-5-29 15:14
感谢大神的指导,完美解决我的问题。上次忘记我的清单还有可能不只是2层,可能有4、5个子层,实在是抱歉 ...

那你再试试数组法,字典我没改;

副本.rar

32.22 KB, 下载次数: 1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 20:33 , Processed in 0.332934 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表