首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以查看给定值是否存在于通过VLOOKUP标识的行中,如果存在,则返回该行中另一个单元格中的值吗?

问是否有一种方法可以查看给定值是否存在于通过VLOOKUP标识的行中,如果存在,则返回该行中另一个单元格中的值吗?
EN

Stack Overflow用户
提问于 2019-04-26 21:05:10
回答 1查看 31关注 0票数 0

我有一个Excel数据集,它通过跟踪编号来总结运输附加费。我把A列中的跟踪编号作为我的索引,但是数据显示在A列的跟踪数的右边,我有一对列规定了收费类型,$收费在跟踪的右边。列标题对于附加费类型和附加费金额是通用的,因此列不是固定的。因此,B栏(任何特定跟踪号码的第一种附加费类型)可以是空白的,也可以包含适用的跟踪附加费的任何子集,与该附加费类型相关的收费数额列于C栏(否则为0美元)。我希望在A列中使用我的跟踪编号重新创建数据集,所有可能的附加费类型固定为列标题(从B列开始),以及仅包含$中的收费金额的表主体,用于给定的跟踪编号和附加费类型组合。请参见当前格式和所需格式,如下所示。

当前:

在这里输入图像描述

所需:

在这里输入图像描述

如何在Excel中最有效地编码?现在,如果我告诉你,一个给定的跟踪号码可以在A列中显示不止一次(即调整先前的收费)。这如何改变公式?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-26 22:41:56

以下公式可能有效:

代码语言:javascript
复制
=IFERROR(INDIRECT("<sheetname>!"&ADDRESS(MATCH(<Tracking#>,<sheetname>!$A:$A,0),MATCH(<columnHeader>,INDIRECT("<sheetname>!"&ADDRESS(MATCH(<Tracking#>,<sheetname>!$A:$A,0),2)&":"&ADDRESS(MATCH(<Tracking#>,<sheetname>!$A:$A,0),<max#ofSurcharges*2+1>)),0)+2)),0)

它实际上是在第一个工作表上找到跟踪#的行,并创建一个数组,在其中搜索附加费名称,如果找到附加费,它将返回相邻单元格的值,即关联值。

请注意,这个公式在某种程度上取决于原始数据的结构:跟踪号码必须在A栏中,附加费必须从B栏开始。

此外,这只会在列表中找到跟踪编号的第一个实例,所以如果需要使用最新的条目,我建议添加某种形式的时间戳来对原始数据进行排序。

编辑:使用VLOOKUP的解决方案可能更有效,但不确定

Edit2:VLOOKUP的问题是原始数据并不像编辑的数据那样是合适的表。实际上,最好的解决方案是首先输入0值,而不是事后输入0。

无论如何,该解决方案与上面的解决方案非常相似,但最终使用VLOOKUP检索数据。如果您正在处理大量数据集,则可以测试哪种方法更有效。

代码语言:javascript
复制
=IFERROR(VLOOKUP(<Tracking#>,<referenceToRawData>,MATCH(<columnHeader>,INDIRECT("<sheetname>!"&ADDRESS(MATCH(<Tracking#>,<sheetname>!$A:$A,0),2)&":"&ADDRESS(MATCH(<Tracking#>,<sheetname>!$A:$A,0),<max#ofSurcharges*2+1>)),0)+2,FALSE),0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55874922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档