将数组转换为列出并复制同一行VBA中的行

问题描述

我正在努力复制具有2种不同格式的数组:一种是水平的,另一种是对角的。我想获取c-F列并将其转换为列表格式,对于在c-f中找到的每个数字,我希望它复制a-b中的相应值。它还会复制c-f中值的每个标题,并将其放置在新工作表的旁边,在该表中转置/复制值。

请查看以下照片:

这就是我所拥有的

Original Data

您可以看到日期是水平的,但在8-11行中,日期变为垂直。

我想转换此数据以复制和粘贴每个单元格值以及a-b中的相应记录。请查看我要创建的内容

Sheet 2 data that I would like to create

请注意工作表1中不存在的工作表2中的新列标题

所有帮助将不胜感激。我不确定如何开始。我相信这些是步骤:

  1. 将a-f设置为工作表1中的范围
  2. 将工作表1中的a-b复制并粘贴到工作表2的第3行上
  3. 在第3行c-f之间的每一行中复制每个单元格,并为每个值重复a-b
  4. 移至下一行
  5. 删除工作表2中第4列中没有值的所有空白行。

谢谢。

解决方法

Power Query是Microsoft的免费Excel 2010加载项。 您需要做的所有事情:

  • 将光标置于表格中
  • 进入超级查询用户界面
    • 不确定2010年,但在2016年及以后,您将选择Data --> Get&Transform-->From Table/Range
    • 在2010年,您必须首先下载并安装该插件/插件,然后按照这些说明进行PQ
  • 仅在用户界面中一次
    • 选择ColorFood
    • 选择为Unpivot Other Columns
    • 重命名Attribute列-> Date
    • 关闭并加载
通过上述过程生成的

M代码

let

//Change table name to reflect your reality
    Source = Excel.CurrentWorkbook(){[Name="Table18"]}[Content],#"Changed Type" = Table.TransformColumnTypes(Source,{{"Color",type text},{"Food",{"1-Jan",Int64.Type},{"1-Feb",{"1-Mar",{"1-Apr",Int64.Type}}),#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type",{"Color","Food"},"Attribute","Value"),#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute","Date"}})
in
    #"Renamed Columns"

enter image description here

enter image description here