Excel精英培训网

 找回密码
 注册

QQ登录

只需一步,快速开始

数据透视表40+个常用小技巧,让你一次学会!
查看: 5551|回复: 24

[已解决]求助帮忙修改及增加代码

[复制链接]
发表于 2016-2-21 22:44 | 显示全部楼层 |阅读模式
本帖最后由 jiangjian138 于 2016-2-23 23:17 编辑

想实现的结果:
1.根据K列部门段,如果在代码表c列里面存在的理赔中心,科目段和预算段就会根据E-G列替换成理赔的科目段和预算段,如:导入表第一行部门段代码为“200102”在代码表C列中存在,就其对应的科目段:6601330200替换为6511052800,预算段1102替换为LP1013;
2.导入表生成的为原始数据,在完成第1步后,根据借方和贷方自动合并:如导入表中四个区域(四种不同颜色,但是实际生成是没有颜色的)根据J-U列相同的条件自动相加得到最终结果;
3.将A-U列/X-Y列变成文本格式
4.能否帮忙修改一下已经完成的代码使得生成的过程更加流畅,不会出现闪屏

最佳答案
2016-2-24 16:43
jiangjian138 发表于 2016-2-24 14:23
其实整个表只是有三步:
1.判断SHEET1的K列里面的部门代码在SHEET2的C列是否存在,如果存在继续第2步,如 ...

楼主测试一下:
  1. Sub test()
  2.     Dim d As Object, arr, brr, i&, j&, s$, t
  3.     t = Timer
  4.     Set d = CreateObject("scripting.dictionary")
  5.     arr = Sheets("sheet2").Range("c1").CurrentRegion
  6.     For i = 2 To UBound(arr)
  7.         For j = 2 To UBound(arr)
  8.             If Len(arr(j, 1)) Then
  9.                 s = arr(i, 3) & "|" & arr(j, 1)
  10.                 d(s) = i
  11.             End If
  12.         Next
  13.     Next
  14.     With Sheets("sheet1")
  15.         brr = .Range("k1:s" & .[l65536].End(3).Row)
  16.         For i = 2 To UBound(arr)
  17.             s = brr(i, 2) & "|" & brr(i, 1)
  18.             If d.exists(s) Then
  19.                 brr(i, 2) = arr(d(s), 4)
  20.                 brr(i, 9) = arr(d(s), 5)
  21.             End If
  22.         Next
  23.         .[k1].Resize(i - 1, 9) = brr
  24.     End With
  25.     MsgBox Timer - t
  26. End Sub
复制代码
运行时间
(, 下载次数: 32)

查找替换.rar

14.29 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-2-22 17:05 | 显示全部楼层
回复

使用道具 举报

发表于 2016-2-23 19:57 | 显示全部楼层
不意思,我运行了一下宏“dffz”,没有出现闪屏现象。
主要还是我没理解你的意图,既然这样,那我问几个问题吧!
1、你一共有3个表,分别是“导入表”“分摊表”“代码表”,你想要做什么?
2、你表里的5个宏都能用吗?你想修改哪个宏?
如果没人解答的话,你可以扫我二维码加我QQ,便于交流。
回复

使用道具 举报

 楼主| 发表于 2016-2-23 21:55 | 显示全部楼层
wanao2008 发表于 2016-2-23 19:57
不意思,我运行了一下宏“dffz”,没有出现闪屏现象。
主要还是我没理解你的意图,既然这样,那我问几个问 ...

.其实我就是想导入表里面的K列部门段,如果在代码表c列里面存在的理赔中心,科目段和预算段就会根据代码表E-G列替换成理赔的科目段和预算段,如:导入表第一行部门段代码为“200102”在代码表C列中存在,就其对应的科目段:6601330200替换为6511052800,同时根据代码表的E-G列的对应关系也将预算段换成LP1013;分摊表其实可以不用管的,看能否帮忙完成这个代码编写
回复

使用道具 举报

发表于 2016-2-24 10:51 | 显示全部楼层
1,源代码实现需求了吗?
运行源代码后,未见“6601330200替换为6511052800,预算段1102替换为LP1013”

2,“200102在代码表C列中存在,就其对应的科目段:6601330200替换为”,200102与6601330200是如何对应的

3,代码表中C列中有重复代码,以哪个为准?
回复

使用道具 举报

 楼主| 发表于 2016-2-24 11:42 | 显示全部楼层
本帖最后由 jiangjian138 于 2016-2-24 11:43 编辑
雪舞子 发表于 2016-2-24 10:51
1,源代码实现需求了吗?
运行源代码后,未见“6601330200替换为6511052800,预算段1102替换为LP1013”

...


我源代码的是意思是:如果Sheet1的K列能在代码表C列里面的话,那么就会将之前的6601330200替换为6511052800,预算段1102替换为LP1013,你可以看看我上传的附件就知道了,Sheet1的K列不变,只是L和S列会变化而已 查找替换1.rar (14.18 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2016-2-24 12:19 | 显示全部楼层
还是未能如实回答问题
1,源代码实现需求了吗?
运行源代码后,未见“6601330200替换为6511052800,预算段1102替换为LP1013”

运行前
qian.jpg

运行后
hou.jpg

所以确实很难理解你的思维

不知你需要怎么改你的源代码
L及S到底要怎么变

评分

参与人数 1 +6 收起 理由
thelastdance + 6 很给力

查看全部评分

回复

使用道具 举报

发表于 2016-2-24 12:29 | 显示全部楼层
2,“200102在代码表C列中存在,就其对应的科目段:6601330200替换为”,200102与6601330200是如何对应的

dy.jpg

这是一种什么对应关系,怎么对应的呢?
回复

使用道具 举报

 楼主| 发表于 2016-2-24 12:40 | 显示全部楼层
雪舞子 发表于 2016-2-24 12:19
还是未能如实回答问题
1,源代码实现需求了吗?
运行源代码后,未见“6601330200替换为6511052800,预算段 ...

没实现需求,您划框的地方是因为它前面的部门段400156不在代码表C列里面,所以就算科目段是6601330200,也不会被替换成6511052800
回复

使用道具 举报

 楼主| 发表于 2016-2-24 12:44 | 显示全部楼层
雪舞子 发表于 2016-2-24 12:29
2,“200102在代码表C列中存在,就其对应的科目段:6601330200替换为”,200102与6601330200是如何对应的
...

200102与6601330200是如何对应的,他们之间是没有对应关系的,我只要如果K列是在代码表里存在的作为判断是否需要将6601330200替换的条件,然后6601330200替换成6511052800后,在根据代码表6511052800中的对应关系,将S列换成代码表中6511052800中的对应的LP1013
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-12-2 12:18 , Processed in 1.526810 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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