Excel 检查单元格是否符合多个条件

Excel 检查单元格是否符合多个条件,excel,excel-formula,Excel,Excel Formula,我正在努力制作一个VLOOKUP,让它按照我需要的方式工作#到处都是不适用的 我可能完全不正确地使用了某些东西,而且没有达到预期的效果 我有以下数据: Windows Version Table - AA2:AD3450 Hardware Model Column - P2:P85 Accepted SKU - M2:M55 Client Name - Sheet1 Cell A2:A9000 Client Model - Shee1 Cell J2:J9000 Client Area - S

我正在努力制作一个VLOOKUP,让它按照我需要的方式工作#到处都是不适用的

我可能完全不正确地使用了某些东西,而且没有达到预期的效果

我有以下数据:

Windows Version Table - AA2:AD3450
Hardware Model Column - P2:P85
Accepted SKU - M2:M55

Client Name - Sheet1 Cell A2:A9000
Client Model - Shee1 Cell J2:J9000
Client Area - Sheet1 Cell B2:B9000
Client OS - Sheet1 Cell E2:E9000
我需要确定以下几点

  • 如果“Windows版本”位于“客户端操作系统”中,“硬件型号”将“客户端型号”输出“客户端名称”与列AG匹配,将“客户端区域”输出到列AH,并将“客户端操作系统”输出到列AI
我希望这有点道理。我一直在想这个问题

数据参考表:

客户信息表

预期产出


要求:对照
lo.客户机
表验证
lo.数据
表中的记录,并输出
有效
无效
两个单独表中的记录
lo.正常
lo.错误
注意:根据OP,有效记录必须具有
客户端操作系统
=
7

lo.数据
表格,位于
[B11:F21]
lo.客户
表格,位于
[H11:M15]

:此函数在使用条件时有限制,因此我建议仅在直接匹配时使用。一旦确定记录符合性,我们将在表
lo.Ok
lo.Error
中使用此函数返回相关值

标准:

客户端操作系统:
=lo.数据[@[客户端操作系统]]=7
客户端操作系统必须根据OP为7(根据需要更改)

:使用此功能验证型号和SKU的记录符合性。
客户机型号:
=匹配(本地数据[客户机型号],本地客户机[型号],0)

SKU:
=匹配(本地数据[SKU],本地客户端[SKU],0)

多个标准:

公式:

:应用相应的多个条件后,使用此函数返回有效\无效记录的列表

使用函数
聚合(函数编号,选项,数组[k])
数组形式
,分别为:

聚合函数参数:
function\u num
=
15
(小)
选项
=
6
(忽略错误值)
数组
=

( ( lo.DATA[Client OS] = 7 )
 * ( MATCH( lo.DATA[Client Model], lo.Clients[Model], 0 ) > 0 )
 * ( MATCH( lo.DATA[SKU], lo.Clients[SKU], 0 ) > 0 ) )’
[k]
=
行([Col$Row:ColRow)
ColRow
=输入公式的第一个单元格的地址,即
行(W$12:W12)

这是得出的公式:

= AGGREGATE( 15, 6,
 ( ( lo.DATA[Client OS] = 7 )
 * ( MATCH( lo.DATA[Client Model], lo.Clients[Model], 0 ) > 0 )
 * ( MATCH( lo.DATA[SKU], lo.Clients[SKU], 0 ) > 0 ) ),
 ROWS(W$12:W12) )
= AGGREGATE( 15, 6,
  ROW(AA:AA) / ( ( lo.DATA[Client OS] = 7 )
 * ( MATCH( lo.DATA[Client Model], lo.Clients[Model], 0 ) > 0 )
 * ( MATCH( lo.DATA[SKU], lo.Clients[SKU], 0 ) > 0 ) ),
 ROWS(AA$12:AA12) )

尽管聚合函数返回有效记录,但它会丢失记录的位置

行(列:列)
(即列=输入公式的列)

这是得出的公式:

= AGGREGATE( 15, 6,
 ( ( lo.DATA[Client OS] = 7 )
 * ( MATCH( lo.DATA[Client Model], lo.Clients[Model], 0 ) > 0 )
 * ( MATCH( lo.DATA[SKU], lo.Clients[SKU], 0 ) > 0 ) ),
 ROWS(W$12:W12) )
= AGGREGATE( 15, 6,
  ROW(AA:AA) / ( ( lo.DATA[Client OS] = 7 )
 * ( MATCH( lo.DATA[Client Model], lo.Clients[Model], 0 ) > 0 )
 * ( MATCH( lo.DATA[SKU], lo.Clients[SKU], 0 ) > 0 ) ),
 ROWS(AA$12:AA12) )

多准则公式

最后,使用从'lo.DATA'表返回相应的记录

= IFERROR( INDEX( lo.DATA[Client Name], AGGREGATE( 15, 6,
 ROW(AC:AC) / ( ( lo.DATA[Client OS] = 7 )
 * ( MATCH( lo.DATA[Client Model], lo.Clients[Model], 0 ) > 0 )
 * ( MATCH( lo.DATA[SKU], lo.Clients[SKU], 0 ) > 0 ) ),
 ROWS(AC$12:AC12) ) ), "" )

建议的解决方案: 请确保表中标题的一致性,这是
VLOOKUP
公式返回正确值的关键

lo.Ok
中的有效记录,位于
[AL11:AP21]

公式

客户名称:

客户端型号、客户端区域、SKU、客户端操作系统:
[AM12]
中输入此公式,然后复制到
[AM12:AP21]

= IFERROR( VLOOKUP( [@[Client Name]], lo.DATA25,
 MATCH( AM$11, lo.DATA[#Headers], 0 ), 0 ), "" )
= IFERROR( VLOOKUP( [@[Client Name]], lo.DATA,
 MATCH( AU$11, lo.DATA[#Headers], 0 ), 0 ), "" )

中的无效记录。错误
,位于
[AT11:AY21]

公式

客户名称:
lo.Ok
表执行验证(即
lo.DATA
中的记录如果在
lo.Ok
中未找到,则该记录为
无效

客户端型号、客户端区域、SKU、客户端操作系统:
[AU12]
中输入此公式,然后复制到
[AX12:AP21]

= IFERROR( VLOOKUP( [@[Client Name]], lo.DATA25,
 MATCH( AM$11, lo.DATA[#Headers], 0 ), 0 ), "" )
= IFERROR( VLOOKUP( [@[Client Name]], lo.DATA,
 MATCH( AU$11, lo.DATA[#Headers], 0 ), 0 ), "" )
地位:

=如果(LEN([@[客户端名称])=0,“,
替换(连接(“错误在:,”,
如果([@[Client OS]]7,,,OS,,),
如果(iSeries错误(匹配([Client Model],lo.Clients.A[Model],0)),“,Model”,”,
IF(iSeries错误(匹配([SKU],lo.Clients.A[SKU],0)),“,SKU“,”,“,”,”)

您可以发布一个数据示例吗?您的输入和预期输出是指向示例工作簿的链接。不确定如何共享,抱歉用额外的图像更新了帖子,因为excel文档可能不理想。您如何验证操作系统?此外,根据数据提供
name 9
name 4
不符合型号要求。在这种情况下在这种情况下,字符串是否包含“Windows 7”将是检查标准。我的错误名称为9,这将是不正确的,因为CPU SKU为5。我在这一点上的错误,是我犯的一个漫长的一天。