首页 > 解决方案 > 将重复数据从行转换为列 Excel

问题描述

我有以下格式的基本住房数据数据集:

现有数据格式:

在此处输入图像描述

该格式是相同的,并且重复用于数百个属性。我想将其转换为表格格式,如下例所示:

财产种类 价格 地点 地区 附加信息 区域
房子 252000 伦敦 肯辛顿 4500平方米
... ... ... ... ... ETC

换句话说,我想在“:”符号列名之前制作文本,之后的文本是进入相应单元格的数据,并为数百个站点重复该操作。通常附加信息中缺少(无数据),但有时有。我不确定哪个是执行此操作的最佳程序。到目前为止,我想到的是 Excel,但如果有更简单的方法,我会很乐意使用它。

标签: excel

解决方案


根据我下面的屏幕截图Excel 365,我使用了以下公式。

C2=FILTERXML("<t><s>"&SUBSTITUTE(INDEX($A:$A,SEQUENCE(COUNTA($A:$A)/4,1,1,4)),": ","</s><s>")&"</s></t>","//s[last()]")
D2=FILTERXML("<t><s>"&SUBSTITUTE(INDEX($A:$A,SEQUENCE(COUNTA($A:$A)/4,1,2,4)),": ","</s><s>")&"</s></t>","//s[last()]")
E2=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(INDEX($A:$A,SEQUENCE(COUNTA($A:$A)/4,1,3,4)),",","</s><s>"),":","</s><s>")&"</s></t>","//s[2]")
F2=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(INDEX($A:$A,SEQUENCE(COUNTA($A:$A)/4,1,3,4)),",","</s><s>"),":","</s><s>")&"</s></t>","//s[last()-1]")
H2=FILTERXML("<t><s>"&SUBSTITUTE(INDEX($A:$A,SEQUENCE(COUNTA($A:$A)/4,1,4,4)),": ","</s><s>")&"</s></t>","//s[last()]")

如果您不在,Excel 365那么可以尝试-

=FILTERXML("<t><s>"&SUBSTITUTE(INDEX($A:$A,ROW($A1)+(ROW($A1)-1)*3),": ","</s><s>")&"</s></t>","//s[last()]")

基本上=ROW(A1)+(ROW(A1)-1)*3会生成一个行号序列,并根据该序列INDEX($A:$A,ROW($A1)+(ROW($A1)-1)*3)返回值。Column A然后FILTERXML()将返回参数中指定的预期值xPath

要知道,你FILTERXML()可以从 JvdV阅读这篇文章。FILTERXML()这对恋人来说是一篇很棒的文章。

在此处输入图像描述


推荐阅读