答案1
我认为这里有一种方法可以使用 Index/Match/Offset,但这里有一种替代方法假设您已按 ID 对工作表进行排序(分组),并且每个人的电子邮件地址不超过 3 个。
我创建了一个辅助列(C 列),它基本上用于计算从工作表顶部到当前行有多少个 ID。它会将一些文本连接到它。
C2单元格公式:
=CONCAT("Email_",COUNTIFS($A$1:A2,A2))
然后下面的公式基本上就是手动偏移......
单元格 E2 公式(将下面一行与列标题进行比较):
=IF(C3=$E$1,D3,"")
单元格 F2 公式(将下面两行与列标题进行比较):
=IF(C4=$F$1,D4,"")
向下拖动公式,输出将显示为:
ID | 姓名 | 身份等级 | 电子邮件 | 电子邮件_2 | 电子邮件_3 |
---|---|---|---|---|---|
1234 | 艾米 | 电子邮件_1 | 艾米1 | 新艾米 | |
1234 | 艾米 | 电子邮件_2 | 新艾米 | ||
5678 | 麦克风 | 电子邮件_1 | 迈克尔 | ||
9123 | 鲍勃 | 电子邮件_1 | 博伯特 | ||
8912 | 弗雷德 | 电子邮件_1 | 弗雷迪 | 燧石 | 埃菲德曼 |
8912 | 弗雷德 | 电子邮件_2 | 燧石 | ||
8912 | 弗雷德 | 电子邮件_3 | 埃菲德曼 |
显然,这种方法不会移动任何东西,但在一切都说完之后,您可以创建工作表的副本,用值替换所有公式,然后排序并保存辅助列 C = Email_1。
我建议寻找更好的答案,因为这个问题有太多的假设;然而,它可能暂时是一个权宜之计。