匹配查找值长度以匹配查找值的开头

时间:2017-05-04 14:54:30

标签: excel match vlookup

在Excel 2013中,我有两个表。 第一个包含长度不同的字母数字代码。 第一个表中的一些例子:

      
  • 12345.12345
  •   
  • 12346-12345
  •   
  • 12AB1234
  •   
  • 123.123
  •   
  • 23456.123
  •   
  • A1234567.012
  •   
  • 01234.12345

第二个表包含我需要与第一个表中代码的开头匹配的字母数字代码。任何数字代码当前都存储为文本。 第二个表中的一些例子:

      
  • 12345
  •   
  • 12346
  •   
  • 123
  •   
  • 23456
  •   
  • A1234567
  •   
  • 01234

如何从包含任何值的第二个表中的其他列返回值?对于某些上下文,第二个表中的返回列包含代码的描述。

我没有使用vlookup或匹配来设法找到解决方案。 还看了一下使用通配符,但这只能用一种方式,错误的方式。

2 个答案:

答案 0 :(得分:0)

假设您不关心字母,最快的解决方案是使用LEFT(FIND(代替。如果需要排除字母,则需要提供如何呈现格式的说明。

解决方案:=IFERROR(LEFT(A2,FIND(".",SUBSTITUTE(A2,"-","."))-1),A2)

Example

这个公式会找到第一个“。”或“ - ”并呈现之前的所有字符。如果没有找到,则会显示完整的ID。

但是,如果还需要删除字母,则应注意使用某些严重的替代嵌套或VBA脚本。

答案 1 :(得分:0)

A1是列中的第一个单元格,在B1中写下以下内容:

=LEFT(A1,MATCH(TRUE,ISERROR(VALUE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),0)-1)  

同时按 Ctrl + Shift + 输入(数组公式)
它将返回数据的第一个数字部分 您可以在C列中复制粘贴值并与第二个表

进行比较

直接在B1中使用Table1中的结果:

=IFERROR(INDEX(Sheet2!$A$1:$A$4,MATCH(VALUE(LEFT(A1,MATCH(TRUE,ISERROR(VALUE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),0)-1)),Sheet2!$A$1:$A$4,0)),"")

同时按 Ctrl + Shift + 输入(数组公式)
它将返回Table2(sheet2)中相应的数字(如果匹配)或""如果没有匹配则为空 更改A1:A4以对应表2中的所有数字,并在拖动公式时保留$以修复引用