【问题标题】:VLOOKUP every word in a cell to perform Abbreviation decodingVLOOKUP 单元格中的每个单词以执行缩写解码
【发布时间】:2020-12-04 21:42:59
【问题描述】:

想要使用公式提供解码多个缩写

我有一个由所有“缩写”单词组成的单元格表,我想使用查找表对它们进行解释。 VLOOKUP、INDEX(MATCH) 或数组公式均优于宏。

主表:

Column A | Column B                 | Column C
Part No. | Description              | DESIRED OUTPUT
ABC101   | CAL 40 UKE WH RD         | California 40" Ukelele White Red 
ABC202   | DLX 55 GTR BK BL         | Deluxe 55" Guitar Black Blue
ABC303   | CAL HD 40 VIO RD BL      | California Hot Dog 40" Violin Red Blue

缩写可以按任意顺序排列,有些可能不存在。

查找表:

Column J | Column K
Abbrev   | Expansion
CAL      | California
DLX      | Deluxe
UKE      | Ukelele
GTR      | Guitar
VIO      | Violin
WH       | White
BK       | Black
RD       | Red
BL       | Blue
40       | 40"
55       | 55"
etc.

我想我可以将“B 列”描述拆分为多列(使用 MID(FIND(" ") - 而不是“文本到列:分隔”),然后查找每一列,忽略空白和错误,并集中结果,但我想在一个超级公式中做到这一点。可能吗?

【问题讨论】:

  • 你有什么版本的 Excel?
  • 如果有 TEXTJOIN 就可以做到这一点,vba 会是一个更好的工具。
  • 我目前有 Excel 2016 和 Excel Web 和 Google 表格作为可用的替代品。

标签: excel text vlookup


【解决方案1】:

感谢您提供文本形式的数据示例。使复制/粘贴到 Excel 变得容易。

一个不那么超级的公式怎么样:

我将 HD 添加到缩写列表中,并为该列表使用了一个表格(可以轻松添加、更改、删​​除,而无需担心调整引用)。

=TEXTJOIN(" ",TRUE,
       INDEX(tblAbb[Expansion],
               MATCH(TEXT(
                          FILTERXML("<t><s>" & SUBSTITUTE(B2," ","</s><s>") & "</s></t>","//s"),"@"),
                             tblAbb[Abbrev],0)))

算法

  • FILTERXML 返回单个缩写的数组
  • MATCH 返回缩写表中这些缩写的行号数组。
  • INDEX 使用MATCH 返回的数组来返回扩展字符串。
  • TEXTJOIN 将该数组与每个扩展之间的 space 分隔符连接在一起。

【讨论】:

    【解决方案2】:

    我想在一个超级公式中做到这一点。可能吗?

    当然!小菜一碟!优步公式:

    =IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[1]");$G$2:$H$12;2;0) & " ";"")
    & IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[2]");$G$2:$H$12;2;0) & " ";"")
    & IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[3]");$G$2:$H$12;2;0) & " ";"")
    & IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[4]");$G$2:$H$12;2;0) & " ";"")
    & IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[5]");$G$2:$H$12;2;0) & " ";"")
    & IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[6]");$G$2:$H$12;2;0) & " ";"")
    & IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[7]");$G$2:$H$12;2;0) & " ";"")
    & IFERROR(VLOOKUP(FILTERXML("<a><b>" & SUBSTITUTE(B2;" ";"</b><b>") & "</b></a>";"//b[8]");$G$2:$H$12;2;0) & " ";"")
    

    查找表中的数字应存储为数字而不是文本。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2018-07-22
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      相关资源
      最近更新 更多