目前我在EXCEL中有2列。 PARENT_ID,GRAND_PARENT_ID。想要找出多层次的育儿问题。例如
PARENT_ID 111 rolls to GRAND_PARENT_ID 222
AND
PARENT_ID 222 rolls to GRAND_PARENT_ID 333
AND
PARENT_ID 333 rolls to GRAND_PARENT_ID 444
Until PARENT_ID = GRAND_PARENT_ID.
所以我需要弄清楚PARENT_ID正在滚动多少级别。我喜欢数百万行,并试图找出一个vlookup,但它只是杀死/冻结我的会话。
我尝试将vlookup GRAND_PARENT_ID发送到PARENT_ID,然后再次获取存在的块,然后再次向PARENT_ID.its执行vlookup,只是冻结我的会话,因为我有数百万行
PARENT_ID GRAND_PARENT_ID
111 222
222 333
333 444
444 444
预期结果:111 222 333 444 until the PARENT_ID to GRAND_PARENT_ID
VLOOKUPS
对Excel来说非常耗费处理器,你最好切换到更复杂(但更轻)的INDEX MATCH
方法,这里有详细解释:https://exceljet.net/index-and-match
如果是一个选项,您还应检查并查看是否使用32或64位Excel。 (文件 - >帮助 - >屏幕右侧)。如果您的计算机是64位处理器,那么从32位Excel切换到64位Excel可能会给您带来很小的性能提升,因为Excel将利用您的更多计算机处理能力。
如果你只为每场比赛返回一个值并且仍然使用精确匹配,那么从VLOOKUP到INDEX / MATCH几乎没有区别。
通过首先对数据进行排序并使用近似查找(在VLOOKUP或INDEX / MATCH中)可以获得巨大的收益。
首先按ParentID升序对数据进行排序,然后使用以下公式查找值:
=IF(VLOOKUP(ParentID,Data,1,TRUE)=ParentID, VLOOKUP(ParentID,Data,2,TRUE), NA())
如果您确定100%确定始终可以找到ParentID,则可以简化为:
=VLOOKUP(ParentID,Data,2,TRUE)
再次注意,您必须先按ParentID对数据进行排序。并且您必须排除数据范围中的列标题。
这样做更快,因为在进行完全匹配查找时,Excel将从列表顶部开始并检查每个值,直到找到完全匹配。因此,对于包含100万行的列表,这需要多达1百万次比较。
对于排序数据的近似匹配,Excel会进行二进制搜索。它检查中间数字,然后更高或更低,再次检查下一个中间数字,依此类推。在包含100万行的列表中,最多需要20次比较才能缩小到单个值,从而使其运行速度提高了50,000倍。