我需要重新安排Excel工作表中的数据
我有一个类似下面的Excel表格 表: 我的数据与此相似,但我有大约350个条目 我的问题是,如何轻松地将数据从顶行传输到相应的行(表中标记为1)?也就是说,如果名字上有一个“1”,我就必须用最上面一行的相应日期来交换它 我可以手动完成这项工作,但要记住有300多个条目,这将需要很多时间 有关其外观的示例: 最终结果: 谢谢大家!我需要重新安排Excel工作表中的数据,excel,excel-formula,Excel,Excel Formula,我有一个类似下面的Excel表格 表: 我的数据与此相似,但我有大约350个条目 我的问题是,如何轻松地将数据从顶行传输到相应的行(表中标记为1)?也就是说,如果名字上有一个“1”,我就必须用最上面一行的相应日期来交换它 我可以手动完成这项工作,但要记住有300多个条目,这将需要很多时间 有关其外观的示例: 最终结果: 谢谢大家! Martin您可以复制350条记录的列表,并将它们粘贴到相切列中。 接下来,您可以使用公式=IF(B2>=1,B$1,“”)并将其拖动/应用于所有单元格 请看下面
Martin您可以复制350条记录的列表,并将它们粘贴到相切列中。 接下来,您可以使用公式
=IF(B2>=1,B$1,“”)
并将其拖动/应用于所有单元格
请看下面我的截图
下面是我的excel文档,其中包含所示的公式
根据@MartinPetrov在@Napoli的回答下的评论,OP希望将日期分组到每个名字旁边,可能采用以下方式之一: 这可以使用Excel的内置功能
#powerquery
完成。请参阅此部分,了解如何在您的Excel版本上使用Power Query。它在Excel 2010 Professional Plus及更高版本中提供。我的演示使用的是Excel 2016
我使用了名为Tbl_10X10的下表,这是一个10 x 10
表,基于OP提供的原始表,其中一些样本数据以黄色突出显示。此解决方案适用于350x350或更大的数据集
这些步骤是:
Transform
选项卡下的Unpivot Columns功能取消pivot除第一列之外的所有列,然后remover删除值
列,然后您应该具有以下内容:Transform
选项卡下的groupby功能,按Column1
对属性
列进行分组,如下所示。如果结果出现预期的错误
,请不要惊慌=Table.Group(#“Removed Columns”,{“Column1”},{{{“Sum”,每个Text.Combine([Attribute],“;”),键入Text})
如果您愿意将所有日期分组在一列中,那么我们的查询将在此停止。如果您希望将日期拆分为单独的列,可以使用转换
选项卡下的拆分列功能将日期拆分为单独的列,如下所示:
请注意,我输入了10
作为要拆分的列数。在您的情况下,您可能需要输入350
或一个合理的数字,以确保所有日期都可以输入到一列中,然后批量删除其中包含null
值的列
完成后,您可以关闭查询并将其加载到新工作表中(默认情况下)
以下是电源查询M代码。除了覆盖公式栏中公式的最后一步外,大多数步骤都使用直接的内置函数
let
Source = Excel.CurrentWorkbook(){[Name="Tbl_10X10"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"September, 12", Int64.Type}, {"June, 13", Int64.Type}, {"August, 21", Int64.Type}, {"July, 5", Int64.Type}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Column1"}, "Attribute", "Value"),
#"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Value"}),
#"Grouped Rows" = Table.Group(#"Removed Columns", {"Column1"}, {{"Sum", each Text.Combine([Attribute], " ; "), type text}}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "Sum", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Sum.1", "Sum.2", "Sum.3", "Sum.4", "Sum.5", "Sum.6", "Sum.7", "Sum.8", "Sum.9", "Sum.10"}),
#"Removed Columns1" = Table.RemoveColumns(#"Split Column by Delimiter",{"Sum.7", "Sum.8", "Sum.9", "Sum.10"})
in
#"Removed Columns1"
如果你有任何问题,请告诉我。干杯:)我有一个快速跟进问题。你知道我如何把所有的日期转移到第一列(包含所有的名字)旁边的一列吗?你的意思是把四列合并成一列吗?如果,您可以执行嵌套的
。。。比如..=IF(LEN(H2)>0,H2,IF(LEN(I2)>0,I2,IF(LEN(J2)>0,J2,IF(LEN(K2)>0,K2,“”))
然后向下拖动公式是的,这会起作用。但我如何才能做到这一点,以350行?我有350列和行/350列??你确定?为了整合350根柱子,需要做一些额外的工作。是的,基本上是350x350。每个名字只有一个“1”条目。所以第一部分工作得很完美-将“1”与相应的日期交换,但是没有将所有内容合并到1列的快捷方式?第一部分确实为我节省了一些时间,所以我可以手动完成第二部分。:)