【发布时间】:2015-07-23 18:19:52
【问题描述】:
我对索引/匹配非常熟悉,但我正在尝试一些新的东西。我有一张描述、金额和日期的表格。我想使用索引/匹配。给定部分描述和查找量,我想返回日期。
这是我的表格的样子(下面是范围名称):
这是绿色单元格中的公式:
=INDEX(Dates,MATCH(F3&TRIM(MONTH($G3)&"/"&DAY($G3)),Amounts&TRIM(MID(Descriptions,SEARCH(" ",Descriptions),5)),0))
因此,您可以看到我正确查找了 21.55 和 1-15-2015 并返回了日期。
问题:您会注意到,在我的描述中,一些短日期使用“/”,而另一些则使用“-”。如何将其构建到我的公式中?如果我尝试查找金额 993.29,日期为 2015 年 6 月 3 日,则会收到错误消息。由于描述中有一个“-”而不是“/”,因此索引/匹配失败。
我知道我可以做一个 IfError() 语句,如果上面的公式返回一个错误,然后用“-”做索引/匹配:
=IFERROR(INDEX(Dates,MATCH(F3&TRIM(MONTH($G3)&"/"&DAY($G3)),Amounts&TRIM(MID(Descriptions,SEARCH(" ",Descriptions),5)),0)),INDEX(Dates,MATCH(F3&TRIM(MONTH($G3)&"-"&DAY($G3)),Amounts&TRIM(MID(Descriptions,SEARCH(" ",Descriptions),5)),0)))
但我宁愿不这样做,因为此查找是更大公式的一部分,而这只会使情况复杂化。
我想知道是否有办法做这样的公式:
INDEX(Dates,MATCH(F3&TRIM(MONTH($G3)&Or("-","/")&DAY($G3)),Amounts&TRIM(MID(Descriptions,SEARCH(" ",Descriptions),5)),0))
(注意:我在第一个 TRIM 之后添加了一个“or()”。
如果这不可能,我是否不得不使用 IF 类型语句?或者有什么替代方法可以让公式相对较短?
【问题讨论】:
-
简短的回答是 - 如果您的数据不统一,则需要进行大量数据操作才能将其转换为可搜索的格式。
-
@Grade'Eh'Bacon - 哈哈,我害怕那个。修复表格的信息可能更容易(想到查找/替换)。
-
我建议在下面使用我的替代 Array 方法,或者只创建一个辅助列 E 来执行类似“查找 '-' 的操作。如果有一个 '-',那么前一天是什么 - ',以及'-'之后的月份。用它做一个日期。如果没有'-',是否有'/'?然后找到日期和月份,然后用它做一天。”
标签: excel excel-formula