|
楼主 |
发表于 2016-11-24 21:32
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
经过几天的研究,简单做出了个程序。但是仍然存在问题,希望大神能够帮忙解决。
1、运行宏命令后,从46行开始出现错误,找不出原因。
2,生成的“对方科目”中会有重复的分录出现,如何取消重复项?
以下是我编的代码,烦请各位不吝赐教~ 万分感谢~~
- im dqhs, shs, shs1, mhs1, mhs, zhs, i, n As Long '当前行数、首行数、总行数定义为long型
- Dim mb$
- Public Sub jg()
- zhs = ActiveSheet.UsedRange.Rows.Count '总行数定义为:工作表中已使用单元格的行数
- For dqhs = 2 To zhs
- a = Cells(dqhs, "A").Value
- b = Cells(dqhs, "B").Value
- shs1 = Application.WorksheetFunction.Match(a, Range("A:A"), 0) '返回A列中,日期与当前行日期相同的首行数
- shs = Application.WorksheetFunction.Match(b, Range(Cells(shs1, "B"), Cells(shs1, "B").End(xlDown)), 0) + shs1 - 1
- '返回B列中,凭证号与当前行凭证号相同的首行数,该行确定为该笔凭证的第一行
- mhs1 = Application.WorksheetFunction.Match(a, Range(Cells(shs, "A"), Cells(shs, "A").End(xlDown)), 1) + shs - 1
- '返回A列中,日期与当前行日期相同的末行数
- mhs = Application.WorksheetFunction.Match(b, Range(Cells(shs, "B"), Cells(mhs1, "B").End(xlDown)), 1) + shs - 1
- '返回B列中,凭证号与当前行凭证号相同的末行数,该行确定为该笔凭证的最后一行
- mb = "" '给mb首个赋值
- For i = shs To mhs
- If Cells(i, "F") <> Cells(dqhs, "F") Then
- mb = mb & "、" & Cells(i, "D").Value 'mb循环语句:用“、”连接对方科目
- End If
- Next i
- Cells(dqhs, "H") = mb
- Next dqhs
- End Sub
复制代码 |
|