我正在处理我正在处理的工作表上遇到一些问题。
我有两张表,一个属性列表和一个查找表。我试图从查找表中提取一个值,但这是我遇到障碍的地方。
我需要根据文本字符串(属性类型)和数字(总楼层面积)找到此值。我遇到的问题是楼面面积与查找表中的值不完全匹配,所以我添加了两个额外的列,指示范围的下端和上端。但由于存在多种属性类型,因此基本上有6个小表。我把表分成了各种命名的范围/间接,这有点帮助,但我仍然无法得到我追求的结果。
Lookup看起来像这样(下面将链接到dropbox上的完整表格的摘录(你可以直接附加文件吗?)
Dwelling Type / Dwelling Code / No. Bedrooms / Median Floor Area / Start Point / End Point
MidTerrace House / MIDENDHOUSE / 1 / 53.7 / 0 / 60.65
MidTerrace House / MIDENDHOUSE / 2 / 67.6 / 60.65 / 76
Detatched House / DETHOUSE / 2- / 99.7 / 0 / 102.3
Detatched House / DETHOUSE / 3 / 104.9 / 102.3 / 125.35
属性列表的相关部分如下所示 - 每行代表一个单独的地址〜总共5000个。
Total Floor Area / Dwelling type match / Dwelling Code /No. Bedrooms
74.54 / Semi-detached house / SEMIHOUSE /
47.5 / Mid-terrace house / MIDENDHOUSE /
我需要的是根据住宅代码和总楼面面积落在查询表格上的范围,填写此表格中每个房产的卧室数量。
我尝试过使用LOOKUP,VLOOKUP,INDEX,MATCH,INDIRECT,数组公式以及各种组合方式。我觉得答案只是盯着我,但我只能看到它。我得到错误或不正确的匹配(在LOOKUP的情况下)。
以下是带有工作表摘录的dropbox的链接,
https://www.dropbox.com/s/nlv5z0ylm5lg3ym/Lookup%20Sheet%20Example.xlsx?dl=0
这些表是可塑的,所以添加列不是问题,我理解一些VBA,所以所有的解决方案都很受欢迎。
如果您需要任何进一步的信息,请告诉我。
谢谢
Callum
答案 0 :(得分:0)
我认为这可能是您正在寻找的解决方案。
首先,我只是将您的表转换为结构化表(基本上选择您构建的表,然后按CONTROL-T (或在INSERT功能区下,单击表并将它们转换为结构化表))。
我给你的表名称与表格(PropertyList和LookupTable)相同。然后我将这个公式添加到“编号卧室”栏中:
=COUNTIFS(LookupTable[Dwelling Code],[Dwelling Code],LookupTable[Start Point],"<="&[Total Floor Area])+NUMBERVALUE(VLOOKUP([Dwelling Code],LookupTable[Dwelling Code]:LookupTable[No. of bedrooms],2,FALSE),"-")-1
工作原理:
我们希望获得与[居住代码]和[起点](楼层面积)小于或等于[总楼面面积]的所有单元格的计数。
但由于其中一些住宅代码从卧室计数“2 - ”开始,我们需要考虑这些,所以我们对第一个[住宅代码]单元格进行Vlookup并查看它们的起点[No 。 [卧室]值,并将其添加到我们的总数中。
我们使用公式“NUMBERVALUE”从文本中提取2,以便它不会导致#VALUE错误。
最后,我们在末尾用减1(-1)进行校正,因为当我们同时使用VLOOKUP和COUNTIFS时,我们会重复计算每个住宅代码的第一个单元格。 (我们每次使用vlookup添加1或2,所以我们需要减去1)。
如果由于某种原因,您不想使用结构化表格,那么这个非常复杂的公式将做同样的事情,但您需要将它放在工作表“属性列表”的单元格G2中。
=COUNTIFS('Lookup Table'!$C$3:$C$24,'Property List'!F2,'Lookup Table'!$F$3:$F$24,"<="&'Property List'!A2)+NUMBERVALUE(VLOOKUP('Property List'!F2,'Lookup Table'!$C$3:$C$24:'Lookup Table'!$D$3:$D$24,2,FALSE),"-")-1