与 VLOOKUP 类似,但功能更多

与 VLOOKUP 类似,但功能更多

所以,我有一份病人名单。然后我还有一份与他们需要接受的临床就诊相对应的销售订单清单。我想看看谁接受了诊治,谁没有接受诊治。

因此,在工作表 1 中,我列出了患者及其 ID 号(患者 ID 是唯一的):患者 ID、患者姓名

然后在第 2 张表上,我有一份销售订单清单(销售订单 ID 是唯一的,患者 ID 不是):患者 ID、销售订单 ID、销售订单日期

我想要做的是让 Excel 查看表 2 中的销售订单,找到患者 ID 匹配的位置,然后按顺序提供日期。

因此,工作表 1 看起来像:患者 ID、患者姓名、销售订单 1 的日期、销售订单 2 的日期、空值(当没有更多匹配项时)。

我已经阅读了关于 VLOOKUP 和 INDEX/MATCH 的所有内容,但似乎找不到可以在第二张工作表上有多个匹配项的情况下工作的函数(第二张工作表上的每个销售订单的患者 ID 都会一遍又一遍地相同)。

请帮忙。

答案1

这是一个不需要任何辅助列或对任何表进行排序的解决方案。它只使用一个相对简单的数组公式。


像下面这样设置两个工作表,第二张工作表名为Sheet2

工作表 1 截图

工作表 2 截图

数组在第一个工作表的单元格中输入(Ctrl++ ShiftEnter以下公式C3,然后复制粘贴/填充到C3:G7

{=IFERROR(SMALL(IFERROR(1/(1/((Sheet2!$A$2:$A$20=$A3)*(Sheet2!$C$2:$C$20))),""),C$2),"")}


请注意,如果 Sheet 1 中 Patients 表的最后一个 Date 单元格已填充,则可能可能会有更多日期未显示。在示例工作表中,我在表格右侧的列中添加了一个公式,以在出现这种情况时发出警告:

该公式(输入数组H3并复制粘贴/填充到H3:H7)为:

{=IF(ISERROR(SMALL(IFERROR(1/(1/((Sheet2!$A$2:$A$20=$A3)*(Sheet2!$C$2:$C$20))),""),G$2+1)),"","more")}

答案2

可以通过计算每个客户的订单数量来解决这个问题。有很多方法可以解决这个问题,但这里只介绍其中一种。

步骤1:

对您的订单表进行排序,按最新订单排序。

第2步:

在销售订单末尾添加一列,其中包含计算客户数量的公式。在新列的第二行中,写入公式=Countif(B$2:B2,B2)

将公式复制下来。

B是找到客户编号的列。

步骤3:

添加一个具有唯一键的列来标识客户编号和订单数量。在第二个新列的第二行中写入公式=B2&" "&X2

B是客户编号,X是您在步骤2中所下的订单数量。

步骤4:

在您的患者表中,添加一个索引匹配最新订单、第二最新订单等的 ID 的列,以返回日期。IFERROR()如果没有匹配,则使用返回空白,并使用绝对引用,以便可以轻松复制公式:

(我尝试从我的挪威语 Excel 翻译该公式)

=IFERROR(INDEX('Order list'!$C:$C,MATCH('Patient list'!$A2&" "&'Patient list'!B$1,'Order list'!$Y:$Y,0)),"")

其中C,包含日期的列以及Y步骤 3 中的关键所在。

我希望这能让您找到适合您的表格的正确解决方案。您可能可以自动执行订单表中的公式等。

命令:

订单表的屏幕截图

患者:

患者表的屏幕截图

相关内容