river_s 发表于 2008-4-14 16:25

【请教】请教格EXCEL转置问题(已解决,不用宏和VBA)

是一个通讯录,内容是这样排列的

其中每四行是一个人的地址信息,现在想把上面这种给转换成

以便再设法导入到Outlook里面,可是不知道用什么方法
试过转置,可是只能4行4行的转置,不能一起弄,我这文件一共五六千行呢……
有没有高手?^u^

[ Edited byriver_s on 2008-4-14 18:41 ]

lzg717 发表于 2008-4-14 16:56

老师教过,俺忘记了。好像是要做个宏

bush-911 发表于 2008-4-14 17:06

用了N年office了到现在还不知道宏是干什么的:'( :'( :'( ,只是听说很强大

river_s 发表于 2008-4-14 17:07

看来这问题还挺复杂的……

Drifter 发表于 2008-4-14 17:09

用宏最方便.

宏就是把手工做过一遍的东西记录下来, 然后重复N多次...

Drifter 发表于 2008-4-14 17:11

当然, 高手都用VBA, 会用的就容易, 重新学起来就太麻烦了.

冰蓝 发表于 2008-4-14 17:14

偶C#用久了,待偶复习一下vba先...

ananstarlit 发表于 2008-4-14 17:32

这个问题不是很难吧,我觉得如果自己不会VBA或者是会一点儿的话,还不如不用VBA来解决这个问题呢,感觉不是很难啊。
你看看附件中的行不?

冰蓝 发表于 2008-4-14 17:55

请查看附件,如果有安全性提示请将"宏"-"安全性"-设置为"低".我做的这个是循环1-1200行.如果要加的话,改按钮里面那个i参数就行的.

冰蓝 发表于 2008-4-14 18:03

如图,如果人很多的话for i=1 to 1200把1200改大一些就成.

ffpp 发表于 2008-4-14 18:05

不用宏的话,假设你的数据在sheet1的A列1-6000行

你在shee2中A1输入如下,然后向右拉到D列,在选中A1到D1,向下拉应该就可以了。

=INDEX(Sheet1!$A$1:$A$6000,(ROW()-1)*4+COLUMN(),1)

Drifter 发表于 2008-4-14 18:30

Posted by 冰蓝 on 2008-4-14 18:03 http://www.ibmnb.com/images/common/back.gif
如图,如果人很多的话for i=1 to 1200把1200改大一些就成.
543441
543442


VBGA写好后怎么执行呢?

冰蓝 发表于 2008-4-14 18:33

先进入设计模式,点"视图","工具栏","控件工具箱",然后点那个三角板图标,进入设计模式,然后双击按钮,出现一个工程窗口,如图2所示,修改I,保存,退出设计模式.再单击那个按钮,就行了.

river_s 发表于 2008-4-14 18:39

琢磨了半天,终于搞定,插个新表,然后横向4个格子分别用以下公式:
=INDIRECT("转置前!A"&(ROW()-1)*4+1)
=INDIRECT("转置前!A"&(ROW()-1)*4+2)
=INDIRECT("转置前!A"&(ROW()-1)*4+3)
=INDIRECT("转置前!A"&(ROW()-1)*4+4)
然后就往下拖……这个对文字保证有效,头昏眼花,下班去也……
多谢楼上的兄弟们,送花啦

[ Edited byriver_s on 2008-4-14 18:41 ]

ananstarlit 发表于 2008-4-14 19:10

Posted by river_s on 2008-4-14 18:39 http://www.thinkpad.cn/forum/images/common/back.gif
琢磨了半天,终于搞定,插个新表,然后横向4个格子分别用以下公式:
=INDIRECT("转置前!A"&(ROW()-1)*4+1)
=INDIRECT("转置前!A"&(ROW()-1)*4+2)
=INDIRECT("转置前!A"&(ROW()-1)*4+3)
=INDIRECT("转置前!A ...

已经搞定了,我就不加你QQ了。再说我的那个方法也是笨方法。

Drifter 发表于 2008-4-14 20:24

高, 实在是高.

cjls2000 发表于 2008-5-29 16:04

求反过来操作的代码    就是每4个转到同1列上

cjls2000 发表于 2008-5-29 16:22

:o :o :o 有人愿意帮忙吗?:o :o

cjls2000 发表于 2008-5-29 16:38

:'( :'( :'( 有人愿意帮忙吗?:( :(

mytemp 发表于 2008-5-29 16:48

是要行列互换吗?这个更简单了,直接复制,新工作表中右键,选择性粘贴,选中转置,OK

cjls2000 发表于 2008-5-29 16:50

不是
是 1 2 34
    5 6 78
    9 10 11 12
变成以列
1
2
3
4
5
6
7
8
9
.
.
.
.

cjls2000 发表于 2008-5-30 05:49

Online
Posts 4
Credit 0
Assets 14 nb
Read Permission 10
Registered 2008-5-29
# 19 Post on 2008-5-29 16:38View ProfileP.M. BuddyQuoteEditReplyReport Thread flowerShow the Author
   有人愿意帮忙吗?

7_up 发表于 2008-5-30 09:53

这活儿一般用Minitab完成。:D

antonioni 发表于 2008-5-30 14:40

记号!真好

shh_czh9 发表于 2008-6-5 15:23

琢磨了一下,用以下公式可以解决
=INDIRECT((IF(RIGHTB((ROW()/4)*100,2)="25","A",IF(RIGHTB((ROW()/4)*100,2)="50","B",IF(RIGHTB((ROW()/4)*100,2)="75","C","D"))))&(IF(INT(ROW()/4)=ROW()/4,ROW()/4,INT(ROW()/4)+1)))

shh_czh9 发表于 2008-6-5 15:25

上述是回答21楼
页: [1]
查看完整版本: 【请教】请教格EXCEL转置问题(已解决,不用宏和VBA)