ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 麻烦帮忙看看这段代码要怎么修改关于流水匹配问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-10-10 19:44 | 显示全部楼层 |阅读模式
本帖最后由 sulli112 于 2023-10-12 11:06 编辑
  1. Public Sub dsm()
  2. '找出相同数据并删除
  3. Dim m As Integer, n As Integer, r1 As Integer, r2 As Integer
  4. r1 = Range("e65536").End(xlUp).Row
  5. r2 = Range("k65536").End(xlUp).Row
  6. For m = 2 To r2
  7. For n = 2 To r1
  8. If Range("e" & n) = Range("k" & m) Then
  9. Range("e" & n).ClearContents
  10. Range("a" & n).ClearContents
  11. Range("k" & m).ClearContents
  12. Range("j" & m).ClearContents
  13. End If
  14. Next n
  15. Next m
  16. End Sub
复制代码
好久没有来论坛了,最近遇到银行流水与金蝶导出核对明细账问题,想请教一下各位大神需要怎么处理,上面有一段代码,但是这段代码只能核对两边1贷方数据是否有相同的,如果有,就清楚相同数据+前面日期,但是我想要的效果是左边的借方,贷方数据日期,与右边的借方,贷方,日期核对重复值,也就是日期+金额一起核对,当日期+金额一致时,才算重复,并且清空对应两边数据,金额匹配的话,希望能实现不会因为千分号与没有千分号情况,而导致匹配不上,非常感谢
ced1cad43e216ff5337a93bc253de75.png

测试.rar

9.76 KB, 下载次数: 31

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-10 20:11 | 显示全部楼层
本帖最后由 sulli112 于 2023-10-11 13:50 编辑

还要考虑如果左边出现类似2023-9-1 金额100一次,但是右边出现2023-9-1 金额100一次两次的情况下,能不能设置成,左边数据相同条件数据出现几次,右边清空几次呢,因为有时候会出现数据重复录入情况,谢谢

TA的精华主题

TA的得分主题

发表于 2023-10-10 21:13 | 显示全部楼层

居然看不懂,做个模拟效果看看。。。

TA的精华主题

TA的得分主题

发表于 2023-10-10 21:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Public Sub dsm()
  2.     '找出相同数据并删除
  3.     Dim m As Integer, n As Integer, r1 As Integer, r2 As Integer
  4.     r1 = Range("e65536").End(xlUp).Row
  5.     r2 = Range("k65536").End(xlUp).Row
  6.     For n = 2 To r2
  7.         For m = 2 To r1
  8.             If Range("e" & n) = Range("k" & m) And CDate(Range("a" & n)) = Range("j" & m) And Range("d" & n) = Range("l" & m) Then
  9.                
  10.                 Range("e" & n).ClearContents
  11.                 Range("a" & n).ClearContents
  12.                 Range("k" & m).ClearContents
  13.                 Range("j" & m).ClearContents
  14.             End If
  15.         Next
  16.     Next
  17. End Sub
复制代码

评分

1

查看全部评分

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2023-10-10 22:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2023-10-11 01:46 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-11 07:39 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dambcer 发表于 2023-10-10 21:39

问一下,你这里判断是3个and,是不是意味着 借贷 日期三个条件一致,才清空数据,但是我想要的是借日期判断,贷日期判断,也就是说判断两次,用不同的金额+日期分别判断,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-11 09:10 | 显示全部楼层
最帅的哥 发表于 2023-10-11 01:46
如果不考虑 同一天,有借贷金额 完全相同的,用 Ado  只需要1个 Full Join  1句轻松完美解决。

肯定要考虑日期的,不然核对不准确

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-11 13:48 | 显示全部楼层

很感谢您的解答,但是有几个代码意思我想问一下,是不是那个意思,意思我都备注在代码后面,然后我想问问如果左边出现类似2023-9-1 金额100一次,但是右边出现2023-9-1 金额100一次两次的情况下,能不能设置成,只清楚数据一次呢?

  1. Sub check()
  2.     Dim ws As Worksheet
  3.     Dim arr()
  4.     Dim lastRow As Long
  5.     Dim lastCol As Long
  6.    
  7.     Set ws = Sheets("Sheet1")
  8.     With ws
  9.         lastRow = .UsedRange.Rows.Count
  10.         lastCol = .UsedRange.Columns.Count
  11.         arr = .Range("A4:M" & lastRow).Value'A4行开始到M列数据吗?
  12.     End With
  13.     For i = 1 To UBound(arr)
  14.         If arr(i, 3) <> "" Then'这里是指从第三行开始吗
  15.             For j = 1 To UBound(arr)
  16.                
  17.                 If CDate(arr(i, 1)) = CDate(arr(j, 10)) Then'这里是指第一列A的数据等于第10列J借方发生额吗
  18.                     If arr(i, 5) <> 0 Then'第五列贷方发生额不为空
  19.                         If CDbl(arr(i, 5)) = CDbl(arr(j, 11)) Then'第五列与第11列贷方数据比对
  20.                             arr(i, 5) = 0
  21.                             arr(j, 11) = 0
  22.                             GoTo NextFor
  23.                         End If
  24.                     ElseIf arr(i, 4) <> 0 Then
  25.                         
  26.                         If CDbl(arr(i, 4)) = CDbl(arr(j, 12)) Then’请问这里是不是比对借方数据?但是对应列数不对吧,应该是4比对9列数据吧?
  27.                             arr(i, 4) = 0
  28.                             arr(j, 12) = 0
  29.                             GoTo NextFor
  30.                         End If
  31.                     End If
  32.                 End If
  33.                
  34.             Next
  35.         End If
  36. NextFor:
  37.     Next
  38.     ws.Range("A4").Resize(UBound(arr), UBound(arr, 2)) = arr
  39. End Sub
复制代码
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2023-10-11 19:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 07:48 , Processed in 0.037324 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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