excel表格吧 关注:13,478贴子:28,063
  • 20回复贴,共1

【求助】怎么根据编号批量在出库记录(号段)中查找数据

只看楼主收藏回复

问题:物资一次领取一箱,一箱有2000个产品,每个产品有单独编号。现发现某些编号产品出现问题流通到市场上,要求快速批量找到领用人,领用时间。


IP属地:四川1楼2024-07-01 21:16回复
    问题产品编号 领用人 领用时间
    13773
    37928
    44745
    30060
    25967
    38370
    31255
    30822
    37063
    04854
    35751
    12496
    15742
    43717
    39068
    45780
    01606
    27401
    12672
    05552
    21726
    45097
    47053
    25839
    21624


    IP属地:四川2楼2024-07-01 21:16
    回复
      物资领用表
      用起始号码 截止号码 领用时间 领用人
      00001 02000 2021年1月20日 张三
      02001 04000 2021年1月21日 李四
      04001 06000 2021年1月22日 王五
      06001 08000 2021年1月23日 赵七
      08001 10000 2021年1月24日 陈六
      10001 12000 2021年1月25日 王五
      12001 14000 2021年1月26日 赵七
      14001 16000 2021年1月27日 陈六
      16001 18000 2021年1月28日 张三
      18001 20000 2021年1月29日 李四
      20001 22000 2021年1月30日 王五
      22001 24000 2021年1月31日 赵七
      24001 26000 2021年2月1日 陈六
      26001 28000 2021年2月2日 赵七
      28001 30000 2021年2月3日 陈六
      30001 32000 2021年2月4日 张三
      32001 34000 2021年2月5日 李四
      34001 36000 2021年2月6日 王五
      36001 38000 2021年2月7日 张三
      38001 40000 2021年2月8日 李四
      40001 42000 2021年2月9日 王五
      42001 44000 2021年2月10日 赵七
      44001 46000 2021年2月11日 陈六
      46001 48000 2021年2月12日 赵七


      IP属地:四川3楼2024-07-01 21:17
      回复
        还望各位大神吧友解惑,vlookup只能查找精确值,无法查找数字范围。想不到什么办法解决,但是需要又确实存在。数据太多,无法一个一个手动查找。或者换个思路,把这个数字段怎么变成48000行数据,然后用VLOOKUP来查找。最好是两个方法都提供一下思路,谢谢。


        IP属地:四川4楼2024-07-01 21:17
        回复
          同求插眼,坐等教程


          IP属地:山东来自Android客户端5楼2024-07-02 14:35
          回复
            Sub Findproduct()
            Dim sh1 As Worksheet, sh2 As Worksheet
            Dim dT, dP, arr
            Dim i, j, N
            Dim str1, str2, num1, num2
            With ThisWorkbook
            Set sh1 = .Sheets(1) '表1-问题产品表
            Set sh2 = .Sheets(2) '表2-物资领用表
            End With
            Set dT = CreateObject("scripting.dictionary")
            Set dP = CreateObject("scripting.dictionary")
            arr = sh2.UsedRange.Value
            For i = 2 To UBound(arr)
            str1 = arr(i, 1)
            str2 = arr(i, 2)
            num1 = StrToNum(str1)
            num2 = StrToNum(str2)
            For j = num1 To num2
            N = Format(j, "00000") '5位编码
            dT(N) = arr(i, 3) '时间
            dP(N) = arr(i, 4) '人
            Next
            Next
            With sh1
            For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
            .Cells(i, 2) = dP(.Cells(i, 1).Value)
            .Cells(i, 3) = dT(.Cells(i, 1).Value)
            Next
            End With
            End Sub
            Function StrToNum(str) As Long '
            Dim i, m
            For i = 1 To Len(str)
            If Mid(str, i, 1) <> 0 Then
            m = i
            Exit For
            End If
            Next
            StrToNum = Right(str, Len(str) - m + 1)
            End Function
            函数不会,VBA代码跑一下可以的,第一个子表“问题产品”,第二个子表“物资领用”,按你格式来的,编码5位数


            IP属地:上海6楼2024-07-02 16:55
            收起回复

              这样?


              IP属地:山东7楼2024-07-09 20:23
              收起回复
                我插件里面有个编码分解功能,可以把区间的编码全部拆成单一的,拆完直接vlookup就可以做到了


                IP属地:福建来自Android客户端8楼2024-07-25 15:44
                收起回复
                  Filter (I2:J100),Value(第一个问题啊干嘛啊)>=起始编码列*value()<=终止编码列,就可以了


                  IP属地:上海来自iPhone客户端9楼2024-09-05 10:34
                  收起回复