Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: lkk0063

[已解决]请求 grf1973 协助帮忙修改程式

[复制链接]
 楼主| 发表于 2017-2-21 11:12 | 显示全部楼层
本帖最后由 lkk0063 于 2017-2-23 09:52 编辑
grf1973 发表于 2017-2-17 16:27
问题是你给我的附件我根本没法改啊。碰到汉字就乱码。

Dear grf1973,
我已将程式ˋ修改为英文,请参阅, 麻烦了
1.程式我有遇到bug, 当我输入批号DWO1-17020218, raw data有该批资料, 但 D栏位与E栏位资料无法显示正常
select DWO1-17020218 lot-1.jpg
2.程式需求说明:   当我选择批号为DWO1-17020218-0813, 按下 "Add data" 按钮, 将DWO1-17020218批号资料新增至 "out"内
当我选择批号为DWOR-17012020-0813, 按下 "Add data" 按钮, 将DWOR-17012020批号资料新增至 "out"内   当我选择批号为17020218-0813, 按下 "Add data" 按钮, 将17020218批号资料新增至 "out"内
当我选择批号为R17020218-0813, 按下 "Add data" 按钮, 将R17020218批号资料新增至 "out"内
固定删除-0423 后面的, 如下图说明
lot No.jpg

3. P 与 M 栏位抓取资料值, 只须抓取两笔资料
lot No-1.jpg




test-111.zip

216.29 KB, 下载次数: 4

回复

使用道具 举报

发表于 2017-2-23 13:53 | 显示全部楼层    本楼为最佳答案   
第一个问题是因为数据里面有空格之类的非空符号。现在做了容错。
另两个问题处理了一下,看看是否符合要求。

test-111.rar

145.24 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2017-2-24 09:37 | 显示全部楼层
本帖最后由 lkk0063 于 2017-2-24 10:18 编辑
grf1973 发表于 2017-2-23 13:53
第一个问题是因为数据里面有空格之类的非空符号。现在做了容错。
另两个问题处理了一下,看看是否符合要求 ...

再次谢谢grf1973帮忙,测试后, 可以使用,但遇到一些小问题

1.第一个问题是因为数据里面有空格之类的非空符号。现在做了容错。
可告知修改哪些地方吗?
2.number重复变没作用, 可否再帮忙修改一下程式, 谢谢!
(按下"Add data " 按钮, 无法检查批号是否重复, 有重复, 则无法新增资料, 并带出警告讯息)
3.另外我想问以下程式注解为何 (如红字):
With ActiveSheet
    xrr = Split(.[g2], "-")
    ph = IIf(UBound(xrr) = 2, xrr(0) & "-" & xrr(1), xrr(0))
    UBound(xrr) = 2, 这句的注解为何?
    sh.Cells(r, 1).Resize(1, 10) = Array(ph, .[c1], .[e1], .[g1], .[e2], .[c2], .[i1], .[k1], .[c3], .[e3])
    .Resize(1, 10) 固定大小位置吗? 还是指定行1列10的位置
    j = 10
    For Each cel In .Range("f4:j14")
        j = j + 1
        sh.Cells(r, j) = cel
        sh.Cells(r, j) = cel , 这句的注解为何?
    Next
    sh.Cells(r, "BI").Resize(, 2) = .[f14].Resize(, 2).Value
    sh.Cells(r, "BK").Resize(, 2) = .[f15].Resize(, 2).Value
   这句的注解为何?




回复

使用道具 举报

发表于 2017-2-24 10:39 | 显示全部楼层
1、修改的地方 If Trim(arr(i, j + jj)) <> "" Then  (原来是If arr(i, j + jj) <> "" Then)
2、ubound(xrr)=2表示批号是类似A-B-C,共三段的。那句话的意思是,如果批号是3段的,取其前两段,否则只取第一段。
3、.Resize(1, 10) 表示包含当前区域及向右共10格的区域
4、 For Each cel In .Range("f4:j14")
        j = j + 1
        sh.Cells(r, j) = cel
        sh.Cells(r, j) = cel , 这句的注解为何?
    Next
   把[f4:j14]按序(从上到下,从左到右)所有单元格的值一一对应给第r行第11列开始向右的单元格
5、sh.Cells(r, "BI").Resize(, 2) = .[f14].Resize(, 2).Value
    sh.Cells(r, "BK").Resize(, 2) = .[f15].Resize(, 2).Value
  这是按照你的要求BI列、BK只取前表的前两个数值
回复

使用道具 举报

发表于 2017-2-24 10:45 | 显示全部楼层
那个重复判断的关键是[g2]单元格转化的lotno和out里面的lotno一致。所以改为
  1. Function number蝋() As Boolean
  2.     Dim d, arr, i, lotno, xrr
  3.     Set d = CreateObject("scripting.dictionary")
  4.     arr = Sheets("out").Range("a1:a" & Sheets("out").[a65536].End(3).Row)
  5.     For i = 5 To UBound(arr)
  6.         d(arr(i, 1)) = ""
  7.     Next
  8.     xrr = Split([g2], "-")
  9.     lotno = IIf(UBound(xrr) = 2, xrr(0) & "-" & xrr(1), xrr(0))
  10.     'lotno = Left([g2], 13)
  11.     If d.exists(lotno) Then MsgBox "number蝋,please check!": number蝋 = True
  12. End Function
复制代码
回复

使用道具 举报

发表于 2017-2-24 10:45 | 显示全部楼层
一有汉字就乱码。。。。。
回复

使用道具 举报

 楼主| 发表于 2017-2-24 13:26 | 显示全部楼层
grf1973 发表于 2017-2-24 10:45
那个重复判断的关键是[g2]单元格转化的lotno和out里面的lotno一致。所以改为

Dear grf1973,
批号重复问题仍有小bug,
当我批号选择 "R17022015-2413" 可卡批号重复
当我批号为 "17022103-2408" 无法卡批号重复问题, 请参阅附件
未命名.jpg

TEST.zip

41.15 KB, 下载次数: 2

回复

使用道具 举报

发表于 2017-2-24 13:54 | 显示全部楼层
这是数据类型的问题。用字典时把第一列强制转换成字符类型即可。
Function twolots() As Boolean
    Dim d, arr, i, lotno, xrr
    Set d = CreateObject("scripting.dictionary")
    arr = Sheets("CC").Range("a1:a" & Sheets("CC").[a65536].End(3).Row)
    For i = 5 To UBound(arr)
        d(CStr(arr(i, 1))) = ""
    Next
     xrr = Split(Me.Range("G2").Value, "-")
    lotno = IIf(UBound(xrr) = 2, xrr(0) & "-" & xrr(1), xrr(0))
    If d.exists(lotno) Then MsgBox "please check lot ID!": twolots = True
End Function
回复

使用道具 举报

 楼主| 发表于 2017-3-1 16:27 | 显示全部楼层
grf1973 发表于 2017-2-24 13:54
这是数据类型的问题。用字典时把第一列强制转换成字符类型即可。
Function twolots() As Boolean
    Dim ...

Dear grf1973 ,
我有用附件修改程式, 但是当勾选批号为 "16072826", 无法带出"AA" 内的资料, 可否帮我确认一下程式码, 谢谢
未命名.jpg

TEST.zip

46.28 KB, 下载次数: 2

回复

使用道具 举报

发表于 2017-3-1 16:34 | 显示全部楼层
窗体的“确定”代码这样改下。
道理跟18楼一样的。
要学会举一反三。
QQ截图20170301163339.png
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 17:57 , Processed in 0.655248 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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