答案1
这有点奇怪,但如果我的“假设和解释”正确的话,它应该可以工作。
假设与解释
假设 1:您的零件编号都是唯一的,并且对于您想要在所有零件的每一列中表示的属性,您的 AttributeIdentifiers 都是完全相同的。
假设 2:AttributeIdentifiers 在每个部分内都是唯一的 - 也就是说,永远不会有两条线同时具有相同的 AttributeIdentifier 和相同的 Part Number。
假设 3:原始数据在第 1 行有标题,数据从第 2 行开始连续填充。
假设 4:原始数据的布局与提供的屏幕截图类似。“零件编号”在 A 列,“AttributeIdentifiers”在 B 列,“值”在 C 列,工作表上没有与此问题相关的其他数据。
解释:您希望零件编号保留在 A 列中,并且该零件的所有属性都根据其 AttributeIdentifier 列在标题下的一行中。
解决方案
- 在同一个工作簿中创建一个新工作表。
- 命名第一张工作表
Old Data
,并命名第二张工作表New Report
。 - 复制
'Old Data'!A:A
到'New Report'!A:A
。 - 执行“删除重复项”
'New Report'!A:A
。 - 复制
'Old Data'!B:B
到'New Report'!B:B
。 - 对 执行“删除重复项”
'New Report'!B:B
。- 确保你不要将此操作的选择范围扩大到此列以外。
- 删除
'New Report'!B1
,并将该列剩余的单元格上移。 - 选择包含数据的所有单元格
'New Report'!B:B
。复制这些单元格,然后使用“选择性粘贴”和“转置”从 开始粘贴它们'New Report'!C1
。 - 删除
'New Report'!B:B
。确保'New Report'!C:C
移位以取代其位置。 - 在 左侧添加一个新列
'Old Data'!A:A
。- 注意:这会将所有列移到右侧,这样“零件编号”将位于 B 列,依此类推。
- (可选)设置
'Old Data'!A1
为UID
。
- 设置。
'Old Data'!A2
=CONCATENATE(B2,C2)
- 向下复制
'Old Data'!A2
整列,直到数据集的末尾。 - 设置
'New Report'!B2
:=IFERROR(VLOOKUP(CONCATENATE($A2,B$1),'Old Data'!$A:$D,4,FALSE),"")
。 - 复制
'New Report'!B2
该列的其余部分,直到数据集的末尾。 - 将 中的所有单元格(从数据集底部
'New Report'!B:B
开始到结束)复制到右侧的其余列。'New Report'!B2
- 选择整个工作
'New Report'
表。将其复制并粘贴到“作为值”中,以锁定数据。 - (可选)删除
'Old Data'!A:A
。
步骤 14 的解释
简单来说,该公式根据匹配的“零件编号”和“AttributeIdentifier”在“旧数据”中搜索合适的值以放入单元格中。如果未找到,它将保留单元格为空白。
注意:我还没有亲自测试过此解决方案是否适合您的用例。但是,我对所涉及的步骤非常熟悉,因此有理由相信它应该适合您,几乎不需要修改。如果您遇到任何错误,请告诉我。