Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4332|回复: 12

[已解决]两个表的数据转移,求高手!

[复制链接]
发表于 2014-9-10 10:51 | 显示全部楼层 |阅读模式
本帖最后由 437153 于 2014-9-10 14:02 编辑

111.rar (8.22 KB, 下载次数: 10)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-9-10 11:10 | 显示全部楼层
本帖最后由 这儿有肥猫 于 2014-9-10 11:12 编辑
  1. Sub zhuanyi()
  2. Dim i&, j&, s&
  3. s = 5
  4. With Sheets("老")
  5. For i = 5 To .Cells(Rows.Count, 1).End(3).Row - 1
  6.     For j = 2 To .Cells(4, Columns.Count).End(xlToLeft).Column
  7.         If .Cells(i, j) <> "" Then
  8.            s = s + 1
  9.            Sheets("新").Cells(s, 2) = .Cells(i, 1)
  10.            Sheets("新").Cells(s, 3) = .Cells(3, 2)
  11.            Sheets("新").Cells(s, 4) = .Cells(3, 4)
  12.            Sheets("新").Cells(s, 5) = .Cells(i, 4)
  13.            Sheets("新").Cells(s, 6) = .Cells(i, j)
  14.         End If
  15.     Next
  16. Next
  17. End With
  18. End Sub
复制代码
回复

使用道具 举报

发表于 2014-9-10 11:11 | 显示全部楼层
c附件

test.rar

11.43 KB, 下载次数: 7

回复

使用道具 举报

发表于 2014-9-10 11:16 | 显示全部楼层
本帖最后由 baksy 于 2014-9-10 11:17 编辑

函数解决~
在新表B6:F6区域复制以下公式、下拉;
B6=INDEX(老!A:A,INT(SMALL(IF(老!$B$5:$K$36>0,ROW($B$5:$K$36)*100+COLUMN($B$5:$K$36)),ROW(A1))*1%))
C6=老!$B$3
D6=老!$D$3
E6=INDEX(老!$A$4:$K$4,MOD(SMALL(IF(老!$B$5:$K$36>0,ROW($B$5:$K$36)*100+COLUMN($B$5:$K$36)),ROW(A1)),100))
F6=INDIRECT("老!"&TEXT(SMALL(IF(老!$B$5:$K$36>0,ROW($B$5:$K$36)*100+COLUMN($B$5:$K$36)),ROW(A1)),"r0c00"),)

**其中 B6、E6、F6 单元格公式为三键回车(公式复制后,点一下公式编辑栏的任意位置,先按住 ctrl、shift 两个键,然后敲enter键)

名称
项目
金额
备注
D
2014
8
主板
2500
D
2014
8
风扇
1591.25
D
2014
8
cpu
513.6
D
2014
8
网卡
133.22
D
2014
8
鼠标
115.56
E
2014
8
主板
71336.04
E
2014
8
声卡
4458.5
E
2014
8
其他
1442722
F
2014
8
主板
27721.2
F
2014
8
声卡
1732.58
G
2014
8
机箱
30795
G
2014
8
风扇
33943.85
G
2014
8
cpu
7677.65
G
2014
8
显卡
14641
G
2014
8
鼠标
1147.77
H
2014
8
主板
8400
回复

使用道具 举报

发表于 2014-9-10 11:46 | 显示全部楼层
一文一武
回复

使用道具 举报

 楼主| 发表于 2014-9-10 13:59 | 显示全部楼层
本帖最后由 437153 于 2014-9-10 14:00 编辑
这儿有肥猫 发表于 2014-9-10 11:10

代码执行结果的,项目那一栏不对。 另外,老表到新表是加到最后一行非空单元格开始,因为新表已经有一些数据了。麻烦好汉在帮忙看看行吗??
都是空值的单元格不转移。
回复

使用道具 举报

 楼主| 发表于 2014-9-10 14:04 | 显示全部楼层
baksy 发表于 2014-9-10 11:16
函数解决~
在新表B6:F6区域复制以下公式、下拉;
B6=INDEX(老!A:A,INT(SMALL(IF(老!$B$5:$K$36>0,ROW($B$ ...

老师不好意思,有两个问题忘记说了。对不起
有几个需要注意的地方:
1、老表到新表的数据,是加在新表的最后一个非空单元格里面。
2、老表数据是空的单元格就不转到新表。


回复

使用道具 举报

发表于 2014-9-10 14:09 | 显示全部楼层    本楼为最佳答案   
437153 发表于 2014-9-10 13:59
代码执行结果的,项目那一栏不对。 另外,老表到新表是加到最后一行非空单元格开始,因为新表已经有一些数 ...

不好意思,已修正,请看附件,如有问题再联系我

test0.rar

11.37 KB, 下载次数: 10

回复

使用道具 举报

 楼主| 发表于 2014-9-10 14:40 | 显示全部楼层
这儿有肥猫 发表于 2014-9-10 14:09
不好意思,已修正,请看附件,如有问题再联系我

很感谢你提供的思路。
有一行代码没明白
  1. .Cells(Rows.Count, 2).End(3).Row
复制代码
这一行是代表什么意思啊?


回复

使用道具 举报

发表于 2014-9-10 14:41 | 显示全部楼层
437153 发表于 2014-9-10 14:40
很感谢你提供的思路。
有一行代码没明白这一行是代表什么意思啊?

第二列的最后一行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:22 , Processed in 0.636778 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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