如何将“多”行关系转变为“一”列布局

如何将“多”行关系转变为“一”列布局

请原谅我的英语。我正在寻找一种转换一组产品数据的方法。我拥有的数据集是一种关系,其中属性按行列出,我希望这些属性是列标题,引用值并与这些属性及其关联的产品相匹配。我最好的例子是以下内容(针对一种产品):

前

应转化为:

后

有成千上万个单独的“零件编号”,因此简单的转置是无法解决的......

答案1

这有点奇怪,但如果我的“假设和解释”正确的话,它应该可以工作。


假设与解释

假设 1:您的零件编号都是唯一的,并且对于您想要在所有零件的每一列中表示的属性,您的 AttributeIdentifiers 都是完全相同的。

假设 2:AttributeIdentifiers 在每个部分内都是唯一的 - 也就是说,永远不会有两条线同时具有相同的 AttributeIdentifier 和相同的 Part Number。

假设 3:原始数据在第 1 行有标题,数据从第 2 行开始连续填充。

假设 4:原始数据的布局与提供的屏幕截图类似。“零件编号”在 A 列,“AttributeIdentifiers”在 B 列,“值”在 C 列,工作表上没有与此问题相关的其他数据。

解释:您希望零件编号保留在 A 列中,并且该零件的所有属性都根据其 AttributeIdentifier 列在标题下的一行中。


解决方案

  1. 在同一个工作簿中创建一个新工作表。
  2. 命名第一张工作表Old Data,并命名第二张工作表New Report
  3. 复制'Old Data'!A:A'New Report'!A:A
  4. 执行“删除重复项” 'New Report'!A:A
  5. 复制'Old Data'!B:B'New Report'!B:B
  6. 对 执行“删除重复项” 'New Report'!B:B
    • 确保你不要将此操作的选择范围扩大到此列以外。
  7. 删除'New Report'!B1,并将该列剩余的单元格上移。
  8. 选择包含数据的所有单元格'New Report'!B:B。复制这些单元格,然后使用“选择性粘贴”和“转置”从 开始粘贴它们'New Report'!C1
  9. 删除'New Report'!B:B。确保'New Report'!C:C移位以取代其位置。
  10. 在 左侧添加一个新列'Old Data'!A:A
    • 注意:这会将所有列移到右侧,这样“零件编号”将位于 B 列,依此类推。
    • (可选)设置'Old Data'!A1UID
  11. 设置。'Old Data'!A2=CONCATENATE(B2,C2)
  12. 向下复制'Old Data'!A2整列,直到数据集的末尾。
  13. 设置'New Report'!B2=IFERROR(VLOOKUP(CONCATENATE($A2,B$1),'Old Data'!$A:$D,4,FALSE),"")
  14. 复制'New Report'!B2该列的其余部分,直到数据集的末尾。
  15. 将 中的所有单元格(从数据集底部'New Report'!B:B开始到结束)复制到右侧的其余列。'New Report'!B2
  16. 选择整个工作'New Report'表。将其复制并粘贴到“作为值”中,以锁定数据。
  17. (可选)删除'Old Data'!A:A

步骤 14 的解释

简单来说,该公式根据匹配的“零件编号”和“AttributeIdentifier”在“旧数据”中搜索合适的值以放入单元格中。如果未找到,它将保留单元格为空白。


注意:我还没有亲自测试过此解决方案是否适合您的用例。但是,我对所涉及的步骤非常熟悉,因此有理由相信它应该适合您,几乎不需要修改。如果您遇到任何错误,请告诉我。

相关内容