Excel 检查单元格是否符合多个条件
我正在努力制作一个VLOOKUP,让它按照我需要的方式工作#到处都是不适用的 我可能完全不正确地使用了某些东西,而且没有达到预期的效果 我有以下数据: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
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。我在这一点上的错误,是我犯的一个漫长的一天。