为包含值的每个单元格创build一个新行

我有一个类似这样的表格:

ID | Item 1 | Item 2 | Item 3 | Qty 1 | Qty 2 | Qty 3 1 | | X | X | | 3 | 4 2 | X | | X | 2 | | 1 3 | | | X | | | 9 

我需要find一种方法来为每个ID为每个项目创build一个新行:

 ID | Item | Qty 1 | 2 | 3 1 | 3 | 4 2 | 1 | 2 

有没有办法通过公式,本地Excel工具或VBA来实现这一点?

使用这里详细描述的技术来得到如下的表格:

SO33043100第一个例子

删除列C (Blanks)X selectColumnB和HOME>编辑 – 查找和select,replace…,find: Qty ,全部replace。 调整列标签并居中。 你应该有一个像这样的表格:

SO33043100第二个例子

你可以通过右键单击其中一个单元格Table,Convert to Range来select转换为Rage。

您可以使用Microsoft Query来指向您的数据表。 select您的数据,然后通过在顶部的公式栏左边的框中input一个名称给它一个命名的范围。

将工作簿保存到某个目录中。 然后select它作为数据源:

  • 点击顶部的数据标签。
  • select“从其他来源”button。
  • 从菜单中select“从Microsoft Query”。
  • select“Excel文件”数据源。
  • find并select您保存工作簿的数据文件。
  • 如果出现没有find表格的错误,请单击确定,然后select底部的“选项…”button,并确保显示所有types的表格。
  • select数据所在的表格或表格,并将所有列移到右侧框,然后单击下一步。
  • 再点击filter对话框中的下一步。
  • 再次点击sorting对话框中的下一步。
  • 在Microsoft Query中select查看数据或编辑查询,然后单击完成。
  • 在Microsoft Query中单击查看菜单并select“SQL …”
  • input此SQL语句(并更改目录path以匹配您保存文件的位置:

 SELECT `Sheet1$`.ID, `Sheet1$`.Qty1 FROM `C:\Users\MyName\Desktop\data.xlsx`.`Sheet1$` `Sheet1$` WHERE (`Sheet1$`.Item1='x') union SELECT `Sheet1$`.ID, `Sheet1$`.Qty2 FROM `C:\Users\MyName\Desktop\data.xlsx`.`Sheet1$` `Sheet1$` WHERE (`Sheet1$`.Item2='x') union SELECT `Sheet1$`.ID, `Sheet1$`.Qty3 FROM `C:\Users\MyName\Desktop\data.xlsx`.`Sheet1$` `Sheet1$` WHERE (`Sheet1$`.Item3='x') 

  • 点击确定
  • select文件菜单,然后“返回数据到Microsoft Excel”。
  • select数据的目标单元格,然后单击确定。