excel里如何快速把一行数据拆分成三行

发布网友 发布时间:2022-04-22 22:28

我来回答

7个回答

懂视网 时间:2022-05-07 08:04

如何高效能拆分一个字段为多行 我本意是将表中的一个字段拆分成多行,例如aaa,bbb拆分为 aaa bbb 现在测试如下: [sql] with t1 as ( select 3 c1,eee,fff,ggg c2 from dual UNION ALL select 2 c1,ccc,ddd c2 from dual UNION ALL SELECT 1 c1,aaa,bbb c2 F


如何高效能拆分一个字段为多行

我本意是将表中的一个字段拆分成多行,例如'aaa,bbb'拆分为

'aaa'

'bbb'

现在测试如下:

[sql]

with t1 as

(

select 3 c1,'eee,fff,ggg' c2 from dual UNION ALL

select 2 c1,'ccc,ddd' c2 from dual UNION ALL

SELECT 1 c1,'aaa,bbb' c2 FROM dual

)

select c1,LEVEL,replace(regexp_substr(c2,'[^,]+',1,level),',',' ') c2

from t1

connect BY level<=length(c2)-length(replace(c2,',',''))+1

order by c1,level

www.2cto.com

返回结果如下:

[sql]

C1 LEVEL C2

1 1 aaa

1 2 bbb

1 2 bbb

1 2 bbb

2 1 ccc

2 2 ddd

2 2 ddd

2 2 ddd

3 1 eee

3 2 fff

3 2 fff

3 2 fff

3 3 ggg

3 3 ggg

3 3 ggg

3 3 ggg

3 3 ggg

3 3 ggg

3 3 ggg

3 3 ggg

3 3 ggg

www.2cto.com

--======================================================

看起来connect by之后产生了大量重复数据,于是加入distinct后取得正确数据。

反思:

我构造的测试数据仅仅只有三行,最长的拆分资料仅3段'eee,fff,ggg',却产生了21笔资料。如果测试数据增多,或者需拆分的段

数量增多,那么connect by产生的数据将是海量的。

用此种方法实际处理生产库数据时,问题马上显现出来,仅17笔资料,最长拆分字段为8段,竟然产生了738万笔资料,尽管我使用

了distinct,依然慢的很。

解决方案:用Join方式取代connect by方式

[sql]

with t1 as

(

select 3 c1,'eee,fff,ggg' c2 from dual UNION ALL

select 2 c1,'ccc,ddd' c2 from dual UNION ALL

SELECT 1 c1,'aaa,bbb' c2 FROM dual

)

SELECT c1,

substr(t.ca,

instr(t.ca, ',', 1, d.lv) + 1,

instr(t.ca, ',', 1, d.lv + 1) -

(instr(t.ca, ',', 1, d.lv) + 1)) AS d

FROM (SELECT c1,

',' || c2 || ',' AS ca,

length(c2 || ',') - nvl(length(REPLACE(c2, ',')), 0) AS cnt

FROM t1) t,

(select rownum lv from

(select max(length(c2 || ',') - nvl(length(REPLACE(c2, ',')), 0)) mlc from t1)

connect by level<=mlc

)d

WHERE d.lv <= t.cnt

ORDER BY c1

www.2cto.com

结论:

对于表资料只有一笔的时候,用connect by一般不会有什么问题。但如果表中资料是多笔,则connect by会产生海量的重复资料。

用join方式可解决此类问题。

热心网友 时间:2022-05-07 05:12

1、打开excel,数据都在一个电子表格内。

2、将第一个电子表格变大

3、选中全部单元格,点击数据中的分列按钮。

4、在弹出窗口选择“固定宽度,然后点击下一步。

5、在新弹出的弹窗中我们就可以调整它们的间距,将它们的分列出来。然后点击完成。

6、完成效果如图。

热心网友 时间:2022-05-07 06:47

贴个图能贴 靠谱点不, ...................。。。。。。。 浪费时间
假设图1 是Sheet1, 图2是Sheet2

sheet2 E4 客户名称输入
=index(sheet1!B:B,row(A6)/3)
下拉公式即可

其他只需改变列号:
比如 办事处:
C4 输入 =index(sheet1!D:D,row(A6)/3)

==============
1052974911@qq.com

热心网友 时间:2022-05-07 08:38

假设是如下案例,对“计算你的个数”进行拆分。

数据---分列---固定宽度


结果显示:

热心网友 时间:2022-05-07 10:46

不太明白你的意思,如何叫从单行复制到合并行?
1:图1(sheet1表)和图2(sheet2表)有共同的部分,可以在图2(sheet2)中输入客户编码字段,然后用VLOOKUP函数引用sheet1中的数据,就可以直接输入到sheet2表中了,VLOOKUP函数的用法可以搜百度。
2.数据如何从一行拆成三行?
不知道你想实现什么效果,可以将一个单元格里的数据拆分成3列,在office2007及以上版本里的 数据---分列 里,然后复制 粘贴--选择性粘贴,选转置,就变成3行了。

热心网友 时间:2022-05-07 13:11

分行是完成不了的,不过你可以建立一个分好行的表样,把数据用vlookup取过来

热心网友 时间:2022-05-07 16:25

不太明白你的需求,图2的三行数据在图1的哪里?没看到啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com