ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1078|回复: 6

[求助] 绘本书名两两模糊匹配(仅会用字典和数组进行两两匹配,但无法实现完整功能)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-3-19 15:54 | 显示全部楼层 |阅读模式
请教各位老师,因为馆藏图书中的书名是固定的,但是会有一些其他的字段,比如时间,比如柜号等等,但是平时不需要这些字段,所以在绘本管理工作表就没有写全,
现在主要通过条形码来查询,仍然有一些问题,不能查询全。希望各位老师能够帮忙想想办法。感谢。

这个是历史借阅工作表
历史借阅数据.png
这是馆藏图书工作表
数据库.png
这是绘本管理工作表
最终形成表格.png
这是三个表的逻辑关系
逻辑关系.png

现目前实现部分功能代码
  1. Sub 图书排名2()
  2.     Dim arr, brr, i&, r&, nr&, X, d, d1, d2, j, wb As Workbook, crr()
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.   Application.ScreenUpdating = False
  5.   Application.DisplayAlerts = False
  6.     Set d1 = CreateObject("Scripting.Dictionary")
  7.     Set d2 = CreateObject("Scripting.Dictionary")
  8.     'Set d5 = CreateObject("Scripting.Dictionary")

  9.       With Sheets("历史借阅")
  10.         nr = .Range("f" & Rows.Count).End(3).Row
  11.     brr = .Range("d2:d" & nr)
  12.     arr1 = .Range("f2:i" & nr)
  13.     ReDim arr(1 To UBound(arr1), 1 To 5)
  14.         For i = 1 To UBound(arr1)
  15.             arr(i, 1) = arr1(i, 1)
  16.             arr(i, 2) = brr(i, 1)
  17.             arr(i, 3) = arr1(i, 2)
  18.             arr(i, 4) = arr1(i, 3)
  19.             arr(i, 5) = arr1(i, 4)
  20.         Next
  21.           'arr = .Range("f2:i" & nr)
  22.           For i = 1 To UBound(arr)
  23.               X = arr(i, 3)
  24.               'm = m + 1
  25.               If Not d.exists(X) Then
  26.               d(X) = arr(i, 1) & "-" & arr(i, 2)
  27.               d1(X) = 1 'arr(i, 5)
  28.               d2(X) = arr(i, 5)
  29.               Else
  30.               d(X) = d(X) & "/" & arr(i, 1) & "-" & arr(i, 2)
  31.               d1(X) = d1(X) + 1 'arr(i, 5)
  32.               End If
  33.           Next

  34.       'j = [a65536].End(xlUp).Row
  35.       'Range("h2:s" & j).HorizontalAlignment = xlCenter
  36.       'Range("a" & j).CurrentRegion.Borders.LineStyle = xlContinuous
  37.       '.[A1].Resize(1, 2) = Array("Number", "Name")
  38.       .[j2].Resize(d.Count, 1) = Application.Transpose(d2.items)
  39.       .[k2].Resize(d.Count, 1) = Application.Transpose(d.keys)
  40.       .[l2].Resize(d.Count, 1) = Application.Transpose(d.items)
  41.       .[m2].Resize(d.Count, 1) = Application.Transpose(d1.items)
  42.       d.RemoveAll
  43.       d1.RemoveAll
  44.       arr = .Range("j2:m" & nr)
  45.       
  46.        End With
  47.       With Sheets("绘本管理")
  48.         j = .Range("b" & Rows.Count).End(3).Row
  49.         brr = .Range("b2:d" & j)

  50.           For i = 1 To UBound(arr)
  51.               X = Val(arr(i, 1))
  52.               If Not d.exists(X) Then
  53.               d(X) = Array(arr(i, 1), arr(i, 2), arr(i, 3), arr(i, 4))
  54.               End If
  55.           Next
  56.           For r = 1 To UBound(brr)
  57.                 x2 = Val(brr(r, 3))
  58.                 If d.exists(x2) Then
  59.                   brr(r, 2) = d(x2)(2)
  60.                   brr(r, 3) = d(x2)(3)
  61.                   Else
  62.                   brr(r, 2) = ""
  63.                   brr(r, 3) = ""
  64.                 End If
  65.           Next

  66.          .[j2].Resize(UBound(brr), UBound(brr, 2)) = brr
  67.                
  68.         'Sheets("历史借阅").[n2].Resize(UBound(arr), UBound(arr, 2)) = arr
  69.       End With
  70.   Application.ScreenUpdating = True
  71.   Application.DisplayAlerts = True
  72.   

  73. End Sub
复制代码
书名两两模糊匹配.rar (397.68 KB, 下载次数: 18)

TA的精华主题

TA的得分主题

发表于 2021-3-19 19:43 来自手机 | 显示全部楼层
要通过条形码来查询,仍然有一些问题,不能查询全

条形码不唯一?

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-20 10:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2021-3-19 19:43
要通过条形码来查询,仍然有一些问题,不能查询全

条形码不唯一?

谢谢老师提出的疑问,条码本来是唯一的,但是存在两个问题,
第一个问题:是部分条码格式问题,有一些不可见空格,有些是数值格式,有些是文本格式,能力有限,只能做部分处理,导致有一部分无法匹配。
第二个问题:条码不全或者有变动,现在就是通过条码的对比来匹配的,但是“绘本管理”工作表中有些绘本无条码,就直接不能匹配。或者绘本管理工作表中条码与馆藏图书工作表条码不一致,有可能是后期变动,也有可能是前期录入系统时的错误,就需要书名去匹配,而不单纯是条码匹配。
感谢老师。

TA的精华主题

TA的得分主题

发表于 2021-3-20 12:12 | 显示全部楼层
lele400024 发表于 2021-3-20 10:07
谢谢老师提出的疑问,条码本来是唯一的,但是存在两个问题,
第一个问题:是部分条码格式问题,有一些不 ...

我用sql匹配了一下 馆藏书名 和 借阅书名,供参考。
超级截屏_20210320_120635.png

在线sql书名.mhtml.zip

21.35 KB, 下载次数: 14

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-20 14:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2021-3-20 12:12
我用sql匹配了一下 馆藏书名 和 借阅书名,供参考。

你好,我对比了下,相似度小于14的会存在有些问题。这个我怎么用于EXCEL中呢,不是很清楚,谢谢。

TA的精华主题

TA的得分主题

发表于 2021-3-20 14:30 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lele400024 发表于 2021-3-20 14:16
你好,我对比了下,相似度小于14的会存在有些问题。这个我怎么用于EXCEL中呢,不是很清楚,谢谢。

这种感觉没有完美的,否则也不要计算机了。
直接对照表复制粘贴到excel吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-20 15:32 | 显示全部楼层
zpy2 发表于 2021-3-20 14:30
这种感觉没有完美的,否则也不要计算机了。
直接对照表复制粘贴到excel吧

好吧,谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 14:43 , Processed in 0.036667 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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