Excel或SQL Server - 多行到行

时间:2014-07-25 19:52:41

标签: sql excel sql-server-2012 transpose

在Excel 2010或Microsoft SQL Server 2012中:

我有一个表在列a中有一个ID,然后在列B到(C - MM)中有位置。

我想让A栏成为所有的位置&然后B列是ID。

到目前为止,我能想出的任何方法都是手工换位。

非常感谢任何帮助!

已添加图片:image

2 个答案:

答案 0 :(得分:0)

这是一种在Excel中半自动的方式,假设ID行是唯一的(如果它不是唯一的,你需要先清理它)

  1. 假设您的原始数据工作表名为“原始数据”
  2. 将原始数据转换为表格或命名范围 - 将其称为Table1
  3. 添加新工作表,将其命名为“正常数据”并在单元格A1中键入“ID”,在单元格B1中键入“位置”
  4. 将“原始数据”中的A列(这是ID列表)中的数据(无标题)复制到“普通数据”的A列
  5. 将此公式添加到“正常数据”的第2列,如下所示,但将“X”更改为“原始数据”中的数据行数(不包括标题): = VLOOKUP(A2,表1,ROUNDDOWN((ROW() - 2)/ X,0)+ 2,FALSE)
  6. 确保这看起来正确
  7. 几次将整个“ID列表”附加到“普通数据”的第1列
  8. 确保它看起来仍然正确
  9. 如果您的位置数据扩展到列MN,那么您需要350份原始ID列表的副本。
  10. 将Excel保存为“使用公式标准化位置”
  11. 将excel保存为“规范化位置数据”
  12. 将“正常数据”的粘贴值复制为仅保存值,不保存公式
  13. 保存工作表
  14. (可选)将“普通数据”过滤为具有空白位置数据的行并删除
  15. 现在可以导入到数据库了(如果你没有删除空格,你可以在导入后通过SQL删除它们)
  16. 为什么会这样:Vlookup获取正确的原始数据行,然后公式会根据行数动态调整到正确的列。

答案 1 :(得分:0)

Pivoting rows into columns in SQL Server

Spioter,谢谢你的信息。我从未尝试过这个,因为我终于找到了有关在SQL中使用UNPIVOT命令的信息。

链接在上面。