Google文档,其中包含当前格式的数据,后跟所需的格式:https://docs.google.com/spreadsheets/d/1XlxEVcP6QpWYyOeflLmp_mKflCBclim_UQSeMkHByh8/edit?usp=sharing
我正在尝试创建一个模板来重新排列以可怕格式导出的数据集。我发布了一个指向Google文档的链接,其中包含当前格式的数据示例,然后是我需要格式化的方式。目前,给定人员的所有数据都在一行中,并且在每个记录之前重复ID#,如图所示。每个记录由12列组成,每行重复31次,每行共计372个单元格。有838行(或837行没有标题)。我需要一组公式或一个宏,将一行数据(372个单元格)分成31行12列,用于整个电子表格。我只能用一行(使用offset
函数然后再使用index
)完成此操作,但我很难找到一种方法使其适用于工作表上的每一行。第一行完成后,公式就不再进一步了。理想情况下,重新排列的数据将显示在新工作表中。我不能手动分隔行并按ID#过滤它们,因为每次重新运行报告时我都必须重做。如果我能进一步澄清,请告诉我!
答案 0 :(得分:1)
这是一个基于公式的解决方案。它假定您可以创建一个新表来重组数据。根据您的描述,这样的声音无论如何都是您想要的。我对这个例子进行了贬低,每行有4个类别和3个重复。更改下面的4和3以匹配您的12和31.(更难拍摄这样的快照!)
数据和结果的图片。
数据。你可以假装我的列标题" A"是你的" ID"。
结果。为简单起见,它重复标题。你可以在最后删除它们。
A1
上的Sheet2
中的公式,并根据需要复制了4列以及更多行。
=INDEX(Sheet1!$A$1:$L$7,INT((ROW()-1)/3)+1,MOD(ROW()-1,3)*4+COLUMN())
工作原理
INDEX
用于从整个数据的数组中返回给定的单元格INDEX
需要一行和一列来检索,所以我使用整数除法来确定行。我们知道结果中的给定行需要重复多次重复的标题。在这种情况下3. ROW()
引用结果中的行,-1
是确保它从0
而不是1
开始。INDEX
的列来自同一个想法。对于给定的行,它需要获得一个当前列的列"推送"重复的行。此处的MOD
可确保列号在小范围内重复,即使该行变为大数。最后,这个公式实际上依赖于在新表上A1
开始的结果。你可以采用不同的方式,但公式将变得更糟(或更多)。