我有一张 Excel 表,其中 B 列中有关键字。每一行在 E 列和 CR 列之间的某个单元格中都会有一个值。
因此,第 3 行将在 B 列中有一个关键字,在 AQ 列中有一个值。
第 4 行可能在 B 列中有相同的关键字,而在 CK 列中有不同的值
给定关键字的每个实例都会在 E 和 CR 之间具有一个且仅有一个值,其余单元格将为空白。
我需要一种方法将每个关键字的所有实例与来自 E-CR 的所有不同值组合成一行。
也就是说,使用上面的例子,我希望第 3 行在 AQ 和 CK 中都有值。然后我会删除第 4 行。
我有几张这样的工作表,每张大约有 4,000 行。
編輯:这个文件包含第 2 至 15 行中的原始数据样本和第 20-23 行中的所需结果示例。
答案1
这是一个解决方案。它将需要 3 次复制/粘贴和 4 次公式拖动填充重复。
1)使用此数组公式为 B 列创建唯一值列表:
=IFERROR( INDEX( $B$3:$B$16, MATCH( 0, COUNTIF( $B$26:B26, $B$3:$B$16), 0)), "<blank>")
将此公式粘贴到唯一值列表将开始的单元格中。
将第一个 COUNTIF 参数“$B$26:B26”编辑为您粘贴到的单元格正上方的单元格地址。确保保留绝对 ($) 引用。
您可以编辑或删除单词“<blank>”,但您可能希望保留一组双引号(您在此处输入的任何内容都将是充满当没有更多唯一值时,但当向数据范围添加新的唯一值时,它将被替换)。
将“$B$3:$B$16”地址的两个出现位置编辑为描述列数据的绝对地址范围。它可以大于当前数据,但不要与刚粘贴的公式重叠。
最后按--Ctrl使其成为数组公式。 ShiftEnter
2)复制并拖动公式以将其复制到下面的单元格并查看所有唯一值或进一步允许新的唯一值。
3) 要在唯一值的左侧添加一列,请将以下公式粘贴到第一个粘贴的左侧:
=IFERROR( INDEX( A$3:A$16, MATCH( TRUE, IF( $B$3:$B$16=$B27, NOT( ISBLANK( A$3:A$16)), FALSE), 0)), "<blank>")
编辑所有地址。两个“A$3:A$16”地址范围都成为您的项目代码数据范围。
“$B$3:$B$16”再次更改为您的描述数据范围的绝对值。
最后,“$B27”应该是粘贴右侧的相邻列(包含第一个唯一值和第一个粘贴公式的单元格的地址)。您需要保留绝对和相对符号,只更改列字母和行号。
再次更改“<blank>”,记住前面的要点。
现在按Ctrl- Shift-Enter将其变为数组公式。
4)复制并拖动此公式,将其复制到拖动第一个公式的下方单元格中。
5) 快完成了。单击粘贴此公式的单元格。
按Ctrl-c然后单击唯一公式右侧的单元格(示例表的 C 列)并按Ctrl- v。Excel 将更新相对引用。
编辑公式,删除单词 <blank> 但保留双引号。
更改公式后,您必须再次按Ctrl- Shift-Enter以使其成为数组公式。(最后一次)
6) 最后一步 - 拖动分为两部分。复制并拖动公式,将其复制到前两个公式所拖动的单元格下方。松开拖动按钮(或机制),但不要取消选择复制单元格的列(它们将在此步骤的第二部分中全部复制到右侧)。
现在复制并拖动公式,将其复制到您有列的右侧(示例表上的 CR)。
注意:后两个公式传播的值是每个列中针对关键字找到的第一个非空白值。这尤其适用于所述问题范围之外的列,即商品代码、价格和供应商列。但它也适用于所述问题的范围,如果任何特定列 (E:CR) 中恰好存在单个关键字的重复项,则将显示与该关键字相对应的第一个非空白值。