excel将从第二列开始的数据,以第一列为基准,排成一个2列的表

张三 语文 数学 外语
李四 物理 语文
王五 化学 生物 音乐 体育

张三 语文
张三 数学
张三 外语
李四 物理
李四 语文
王五 化学
王五 生物
王五 音乐 王五 体育

附件所示表格中,是将sheet1中的数据整理到sheet2

sheet2

A1输入 张三

A2

=IF(ROW(A1)-MATCH(A1,A$1:A1,0)+1=COUNTA(OFFSET(Sheet1!$B$1:$I$1,MATCH(A1,Sheet1!$A:$A,0)-1,,)),OFFSET(Sheet1!$A$1,MATCH(A1,Sheet1!A:A,0),),A1)

下拖

B1

=OFFSET(Sheet1!$A$1,MATCH(A1,Sheet1!A:A,0)-1,COUNTIF(A$1:A1,A1))

下拖








温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-04
用数据透视表比较简单~ 不过操作有点多。
假设你原始数据在A1:E3,首先在最上面插入一个空行,数据移动到A2:E4,
然后用数据透视表向导,选“多重合并计算数据区域”,透视表范围选A1:E4,创建单页字段,一直下一步即可。透视表创建好以后,会有一个总计行,双击总计行显示的数字9那个格子,新出现的一个sheet中就是按照第二种格式基本排好的数据了,需要再删除一下无用的行和列即可。本回答被提问者采纳
第2个回答  2013-04-04
遇到复杂的问题,使用辅助列吧。
为叙述方便,假设如下:
A B C D E
1 张三 语文 数学 外语 张三 语文 1 张三 语文 数学 外语
2 李四 物理 语文 张三 数学 1 张三 数学 外语
3 王五 化学 生物 音乐 体育 张三 外语 1 张三 外语

C-E列为辅助列。第一行设置初始值。
C1输入1 (表示当前处理A列的第一行)
D1=LEFT(INDEX(A:A,C1),FIND(" ",INDEX(A:A,C1)))
E1=TRIM(SUBSTITUTE(INDEX(A:A,C1),D1,))
B1=D1&IF(ISERR(FIND(" ",E1)),E1,LEFT(E1,FIND(" ",E1)))

第二行公式如下:
C2=IF(ISERR(FIND(" ",E1)),C1+1,C1)
D2=LEFT(INDEX(A:A,C2),FIND(" ",INDEX(A:A,C2)))
E2=IF(ISERR(FIND(" ",E1)),TRIM(SUBSTITUTE(INDEX(A:A,C2),D2,)),MID(E1,FIND(" ",E1)+1,50))
B2=D2&IF(ISERR(FIND(" ",E2)),E2,LEFT(E2,FIND(" ",E2)))

将B2:E2的公式向下复制即可。
第3个回答  2013-04-04
其实这个真没有什么更快捷的方式,你想尝试一下的话就用=MID(text,start_num,num_chars) 吧
相似回答