Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要重新安排Excel工作表中的数据_Excel_Excel Formula - Fatal编程技术网

我需要重新安排Excel工作表中的数据

我需要重新安排Excel工作表中的数据,excel,excel-formula,Excel,Excel Formula,我有一个类似下面的Excel表格 表: 我的数据与此相似,但我有大约350个条目 我的问题是,如何轻松地将数据从顶行传输到相应的行(表中标记为1)?也就是说,如果名字上有一个“1”,我就必须用最上面一行的相应日期来交换它 我可以手动完成这项工作,但要记住有300多个条目,这将需要很多时间 有关其外观的示例: 最终结果: 谢谢大家! Martin您可以复制350条记录的列表,并将它们粘贴到相切列中。 接下来,您可以使用公式=IF(B2>=1,B$1,“”)并将其拖动/应用于所有单元格 请看下面

我有一个类似下面的Excel表格

表:

我的数据与此相似,但我有大约350个条目

我的问题是,如何轻松地将数据从顶行传输到相应的行(表中标记为1)?也就是说,如果名字上有一个“1”,我就必须用最上面一行的相应日期来交换它

我可以手动完成这项工作,但要记住有300多个条目,这将需要很多时间

有关其外观的示例:

最终结果:

谢谢大家!


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列的快捷方式?第一部分确实为我节省了一些时间,所以我可以手动完成第二部分。:)