Excel将多个表转换为longform数据

时间:2017-10-09 03:47:07

标签: excel

我有一个数据集需要转换为longform,因此我可以在数据分析程序(R)中使用它。每个表的格式都是标准化的,所以我想知道是否有办法让excel为我转换数据。 在此先感谢您的帮助。

数据集 Data set

长片 Longform

1 个答案:

答案 0 :(得分:1)

如果你必须定期为大量数据做这件事,那么编写宏来循环遍历所有内容将是最好的。对于大量数据来说仍然更快的手动解决方法是创建一组公式,将所有数据从一个人的一个点转换为8行长格式数据。然后通过更改引用,您可以为每个人的每个点重复使用这些公式:

您的前4列是手动:位置,点,季度,类型。它们每8行有固定值。为一个数据点手动输入它们,它们将在以后复制。

然后有一个第5工作栏,记录人员所在地点的每组数据的锚点位置。对于这个例子,我假设你在名为“数据”的表格中的单元格B3中有一个“NW”值。在第5个表格列中,仅在第一行(单元格E2)中放入文本“Data!B3”,没有等号。

所有8行的剩余列都使用OFFSET和INDIRECT函数引用此锚点。对于前8行数据中的每一列,请根据它们与锚点的相对位置来参考数据集中的每个值:

第一个数据列是NW Shrub Distance值,它偏移1行1列:     = OFFSET(INDIRECT(E2),1,1)

第二个数据列是NW Shrub Height,它被1行和2列偏移:     = OFFSET(INDIRECT(E2),1,2)

继续浏览该行的其余列。然后转到表格中的下一行。第一个数据列是NE灌木距离,它从锚NW单元偏移7行和1列:     = OFFSET(INDIRECT(E2),7,1)

然后第二行中的第二个数据列是NE灌木高度,它从锚定NW单元格偏移7行和2列:     = OFFSET(INDIRECT(E2),7,2)

为所有8行的所有列准备这些公式。这需要一段时间,但是在完成之后,您可以只复制整个块并将其粘贴到第一个块下面。将整个块的一个锚点值从Data!B3更新到下一个数据块中的NW位置,例如Data!H3,所有公式现在将从所有单元格中拉出相对于新锚点的值。

对每个数据块重复此操作,你可以很快地将它用于longform。