发布网友 发布时间:2022-04-23 04:16
共5个回答
热心网友 时间:2022-05-29 12:02
原数据:
数据转置之后的数据:
公式:
=INDIRECT(ADDRESS(MATCH($A18,$A$1:$A$16,0)+COLUMN()-2,ROW()-14-MATCH($A18,$A$18:$A$1600,0),1,1))
要求:
公式设置是在同一个Sheet内的数据;
组名转置前后数据最好放在在A列;
组名,A、B、C各列,中间不能插列
公式说明:
=INDIRECT(ADDRESS(Row,Col,1,1)) 对特定的地址取值,特定行、特定列
=MATCH($A18,$A$1:$A$16,0)。在A1:A16中,找与A18值相匹配的单元格,返回匹配值的位置(此处是取行号)
公式中使用了2个Match公式,取值范围不同,目的是要知道当前单元格的位置信息。
注意:
公式中带“$”,为数据锁定,便于行向、纵向拉公式复制
第二组、第四组、第五组,数据超过为4个或5个,先把组名在A列中设置好,可以每组都设置5行。如:第一组有5行为第一组。这样,第一组的第4、5个数显示为“0”。
热心网友 时间:2022-05-29 12:02
这种转换,power query是最合适的。动动鼠标点几下就行了。
而且一劳永逸,数据扩展变化了,会自动变化。
操作方法见动图。
由于数据不规范,要先“逆透视”,然后“透视”即可。
你的数据没有表头,为了便于描述,我增加了列1-7:
1,随便点一个单元格,数据-来自表格区域-自动启动power query
2,选中列3-7,转换-逆透视
3,选中列2,透视:对象选”值“,高级选项选”不要聚合“
4,删除多余的列
5,主页-关闭并上载-选择一个目的地
使用公式也可以。
1,提前输入各组5行:
选中B18:D22,输入以下公式,并按Ctrl+Shift+Enter确定,然后下拉至第42行。
=TRANSPOSE(OFFSET(C$1,3*MID(A18,2,1)-3,0,3,5))
组号无需手动输入,A18输入以下公式下拉:
=OFFSET(A$1,3*INT((ROW(A1)-1)/5),0)
2,提前按各组列数准确输入:
选中G18:I18,输入以下公式,并按Ctrl+Shift+Enter
=TRANSPOSE(OFFSET($C$1,3*MID(F18,2,1)-3,COUNTIF(F$18:F18,F18)-1,3,1))
组号无需手动输入,F18输入以下公式下拉:
=IF(F17="",$A$1,IF(COUNTIF(F$17:F17,F17)<(SUMPRODUCT(($C$1:$G$15<>"")*($A$1:$A$15=F17))/3),F17,TEXT(1+MID(F17,2,1),"第0组")))
热心网友 时间:2022-05-29 12:02
Excel怎样处理一列数据根据标题转成四列数据表
热心网友 时间:2022-05-29 12:03
公式复杂,手工费时容易出错,最好用代码,运行效果如下:
实效:可选择数据用作行、列字段信息,根据信息提取数据,实现转置功能,注意数据须顺序记录,否则需要将部分代码删除或进行注释(在代码前加英文半角单引号')。
热心网友 时间:2022-05-29 12:04
几十行建议手工,上千行就用代码。