在Excel中查找每个集合中的最后一个条目
在Excel中,如果我在在Excel中查找每个集合中的最后一个条目,excel,vlookup,Excel,Vlookup,在Excel中,如果我在表1中有以下数据: Name | Hobby =============== James | Cooking Phil | Swimming Phil | Golfing Eric | Working Eric | Running Eric | Boarding 以及以下表2: Hobby | Category ==================== Cooking | Not Available Swimming | Available Golf
表1
中有以下数据:
Name | Hobby
===============
James | Cooking
Phil | Swimming
Phil | Golfing
Eric | Working
Eric | Running
Eric | Boarding
以及以下表2
:
Hobby | Category
====================
Cooking | Not Available
Swimming | Available
Golfing | Available
Working | Not Available
Running | Available
Boarding | Available
如何根据表1
中的名称从最后一个爱好的表2
返回类别
理想情况下,我在数组/范围中得到的结果如下所示:
(Categories)
{"Not Available"; (Cooking from James)
"Available"; (Golfing from Phil)
"Available"} (Boarding from Eric)
我知道我可以使用vlookup
或索引匹配
进行常规查找,以获得每个爱好
的类别
,但在这种情况下,我特别感兴趣的是获得每个姓名
的最后一个爱好
,这是我在搜索后无法找到的
注意,表1
可能包括空白的姓名
和/或爱好
。但是名称
本身是分组/排序在一起的。为了便于阅读,我在第三个表中将公式分成了两列。所有3个表都是从同一行开始的Excel表
H2和自动填充,因为是Excel表格
=VLOOKUP(INDEX(Table1[Hobby],MAX(IF(Table1[Name]=Sheet11!$G2,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1))),Table2[#All],2,FALSE)
和I2:
= [@Category] & "; (" & INDEX(Table1[Hobby],MAX(IF(Table1[Name]=Sheet11!$G2,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1))) & " from " &[@Name] & ")"
输出:
以下是我解决问题的方法(不需要VBA):
以下是表格:
现在,在C列中,我以以下方式使用了VLOOKUP
:
=VLOOKUP(B2, $F$2:$G$7, 2, FALSE)
将其输入C2单元格并向下拖动。然后,在D2中,我输入了一个公式:
=IF(A2<>A3, C2 & " (" & B2 & " from " & A2 & ")", "")
=IF(A2A3,C2&“(&B2&“from”&A2&“,”)
再一次,把它一直拖下去
然后您将得到如图所示的结果。将名称包含在第三个表中不是会非常容易吗?@Jeeped-sure。老实说,我认为第三个表应该是一个数组,除非它是一个透视表或其他我不知道名称如何是动态的。此外,我还计划计算有多少可用
和不可用
,但我认为无论名称
列是否存在,都可以这样做。返回每个名称的最后一个非空嗜好和交叉引用可用性非常容易。如果您想增加从结构化表引用返回唯一名称的顺序列表的难度,那么如果没有vba,这可能是不值得的;您最近返回的硬编码值数组将清除所有内容。@Jeeped您将如何执行此操作?如果需要,我可以把它换回来。假设我想做您提到的关于交叉引用可用性的第一个选项。若可能的话,我想返回一组结果。好主意。但是有没有办法让它只返回一个结果数组(或者即使结果在不是最后一个结果的每个结果之间包含类似false
)。我试图避免使用A2A3
,因为我想将结果保存在一个单元格中(作为一个数组-是的,我知道数组可以跨越多个单元格),然后将其包装在countif中。您尝试过吗?