Excel如何在不使用VBA的情况下从逗号分隔列表中查找匹配元素的所有行

2023-12-01

这是我的问题,我有一个包含两列的表:产品参考和相应的通知 ID:

 | A       | B      | C      | D      |
---------------------------------------
1| Product | Notice |        |        |
2| p1      | n1     |        |        |
3| p2      | n2     |        |        |
4| p3      | n3     |        |        |
5|         |        |        |        |
6|         |        | p1, p3 | =...   |

(edit:在我的现实生活应用程序中,“产品参考”和“通知 ID”列不是并排而是由其他列分隔开)

在另一个单元格(例如 C6)中,我有一个以逗号分隔的产品参考列表,比方说p1, p3我需要一个公式来输出相应的通知ID,即n1, n3在本例中,位于单元格 D6 中。

重要的:由于不同的原因,我无法使用VBA,我需要一个标准的excel数组公式。

这是我目前可以做的:

  1. FILTERXML函数,我可以将逗号分隔的列表拆分为一个数组:FILTERXML("<t><s>" & SUBSTITUTE(C6, ", ", "</s><s>") & "</s></t>", "//s")

  2. TEXTJOIN函数,我可以将数组合并为字符串。

  3. 我可以通过组合提取单个匹配项INDEX and MATCH函数,例如:

=IF(ISERROR(MATCH("p3"; A:A; 0)); "not found"; INDEX(B:B; MATCH("p3"; A:A; 0)))

(这对我来说没有用,因为 A 列中的引用再次是唯一的)

(顺便说一句,我不知道是否有更好的方法来处理由MATCH当没有找到匹配项时)

  1. 我可以提取 B 列中与多个匹配项对应的元素并将其连接到 a单一参考在 A 列中(使用 Ctrl+Shift+Enter 激活数组公式):
{=TEXTJOIN(", "; TRUE; IF(A:A="p2"; B:B; ""))}

(这对我来说没有用,因为 A 列中的引用再次是唯一的)

总之:我可以查找多个匹配项并将其合并到单个引用,但无法查找单个唯一匹配项并将其合并到多个引用(我想要做的)。


失败的尝试

我尝试以不同的方式混合以前的公式来得到我想要的,但都失败并出现错误。

  • 结合 1、2 和 4(使用OR在匹配的布尔数组上):
{=TEXTJOIN(", "; TRUE; IF(OR(A:A=FILTERXML("<t><s>" & SUBSTITUTE(C6, ", ", "</s><s>") & "</s></t>", "//s")); B:B; ""))}

或(使用SUM在匹配的布尔数组上):

{=TEXTJOIN(", "; TRUE; IF(SUM(A:A=FILTERXML("<t><s>" & SUBSTITUTE(C6, ", ", "</s><s>") & "</s></t>", "//s")); B:B; ""))}

在这里,我不确定如何处理中考虑的不同数组IF(A 列和参考文献列表由FILTERXML).

  • 结合 1、2 和 3:
{=TEXTJOIN(", "; TRUE; INDEX(B:B; MATCH(FILTERXML("<t><s>" & SUBSTITUTE(C6, ", ", "</s><s>") & "</s></t>", "//s"); A:A; 0)))}

在这里,我不确定如何再次处理 (i) 所考虑的不同数组(A 列和由FILTERXML), (ii) 引起的误差MATCH当没有找到匹配时,(iii) 数组引用传递给INDEX功能。


好问题。如果您只有 Excel 2019,您可以选择:

enter image description here

公式为E1:

=TEXTJOIN(", ",,IFERROR(VLOOKUP(FILTERXML("<t><s>"&SUBSTITUTE(D1,", ","</s><s>")&"</s></t>","//s"),A:B,2,FALSE),""))

如果您有 Excel O365,那么也许:

=TEXTJOIN(", ",,XLOOKUP(FILTERXML("<t><s>"&SUBSTITUTE(D1,", ","</s><s>")&"</s></t>","//s"),A:A,B:B,"",0))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel如何在不使用VBA的情况下从逗号分隔列表中查找匹配元素的所有行 的相关文章

  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • 如果多个键是相同的 JS,则对对象中的值求和

    例如我有 5 个对象 row aa col 1 value 1 row bb col 2 value 1 row bb col 3 value 1 row aa col 1 value 1 row aa col 2 value 1 我想对值
  • Java中char数组的默认值是多少?

    如果我像这样分配字符数组 char buffer new char 26 它分配的默认值是什么 我尝试打印它 但它只是一个空字符 System out println this is what is inside gt buffer 1 t
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • VBA ByRef 参数类型不匹配

    最初在我的主代码部分中 我有一个丑陋的 if 语句 尽管它会运行丑陋 我决定将其设为我要调用的函数 这导致我收到错误 编译错误 ByRef 参数类型不匹配 我的假设是该函数需要正确引用 尽管我一直在阅读文档并且不明白为什么 gt 声明 Sh
  • 输入新行并复制上面单元格中的公式

    我正在尝试创建一个 Excel 宏来执行以下操作 在文档末尾输入新行 复制上面单元格中的公式 到目前为止我有这个 Sub New Delta Go to last cell Range A4 Select Selection End xlD
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • SQL Excel VBA 运行时错误 3709 无效连接

    这是我的第一个问题 欢迎提出建设性的批评 我正在尝试从 Excel VBA 查询 Access 数据库并将返回信息放入 Excel 范围中 我收到此错误 错误消息 运行时错误 3709 连接无法用于 执行此操作 在此情况下它已关闭或无效 语
  • 如何使用 CNContacts 快速获取手机号码?

    我有一些代码可以检索用户联系人中的所有电话号码 但只想过滤掉手机号码 目前 我只是通过将第一个数字为 或第二个数字为 7 的数字添加到数组中来实现此目的 如下所示 func findContacts gt CNContact let key
  • Excel 2003 中的 IFERROR

    我通过阅读几个线程了解到IFERROR在 Excel 2003 中由IF ISERROR 我尝试从 Excel 2007 复制的代码是 IFERROR A1 我知道必须有一个简单的解决方案将其转换为IF ISERROR 但我没有任何效果 意
  • 使用 ADODB 连接从关闭的工作簿中检索数据。某些数据被跳过?

    我目前正在编写一些代码 可以通过 ADODB 连接访问单独的工作簿 由于速度的原因 我选择了这种方法而不是其他方法 下面是我的代码 Sub GetWorksheetData strSourceFile As String strSQL As
  • “实际或正式的参数列表长度不同”

    当我尝试将某些内容放入 括号中时Friends f new Friends friendsName friendsAge 它出现错误 Friends 类中的构造函数 Friends 不能应用于给定类型 必需 无参数 发现 字符串 整数 原因
  • 无法使用 VBA 代码从 Excel 连接到 Teradata - 无法通过网络访问 Teradata 服务器

    我一直在尝试使用 vba 代码从 Excel 连接到 Teradata 但收到以下错误 无法通过网络访问 Teradata Server 我已经能够从 Teradata SQL 助手成功连接 并且还成功 ping 通 Teradata 服务
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 如何计算 3D 坐标的线性索引,反之亦然?

    如果我有一个点 x y z 如何找到该点的线性索引 i 我的编号方案是 0 0 0 是 0 1 0 0 是 1 0 1 0 是最大 x 维度 另外 如果我有一个线性坐标 i 我如何找到 x y z 我似乎无法在谷歌上找到这个 所有结果都充满

随机推荐

  • SSIS 中的 TFS 集成

    我有几个SSIS使用开发的包VS2013 NET 4 5 Framework 在一种解决方案中 很少有使用开发的软件包VS2012 NET 4 0 Framework 在另一个解决方案中 我想将这两种解决方案与TFS 目前 我已经集成了VS
  • 无法跟踪实体类型的实例,因为跟踪了具有相同键值的另一个实例[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我在 asp net core 2 0 中使用通用存储库模式 它无法处置存储库对象 当我要更新条目时 它已成功更新一次 但当我尝试更新更多时 它会抛出以下异常 无法跟踪实体类型 Compa
  • 如何使用函数返回两列

    我想用我的 SQL 函数返回 2 个值 CREATE OR REPLACE FUNCTION get avg prices RETURNS table avg sale price decimal avg rent price decima
  • 即使在 .NET 中使用 SQLParameter 也存在 SQL 注入示例?

    我听说当对 SQL Server 使用 ADO NET SQLParameter 参数化查询 时 仍然可以进行 SQL 注入 我正在寻找 C VB 代码中的真实示例作为证据 编辑 我正在寻找具体的工作示例 没有介绍 sql 注入或如何防止它
  • 使用自定义着色器渲染“硬”边缘

    我想重现使用创建的效果THREE EdgesHelper 在 硬 对象边缘上绘制边界 但使用自定义着色器而不是添加单独的着色器THREE Line目的 本质上我想做的事情这个演示 但仅适用于 硬 边界 例如边界不在两个共面之间 方法 应用类
  • ADFS + OpenID Connect 电子邮件声明和外部 ADFS

    我在 Windows Server 2016 上使用 OpenID Connect 设置 ADFS 时遇到困难 我已经设置 AD 进行测试 并且可以成功进行身份验证 但是电子邮件声明不在 id 令牌中 此外 我还在声明提供者信任中设置了外部
  • 需要获得超过 20 个区域监控通知

    我正在开发一个应用程序 用户可以在其中设置多个位置 当用户进入或离开特定位置边界时 我成功显示通知 现在 有一种情况 我需要为所有保存的位置提供监控 并且可能有数百个甚至更多 我在 Apple 论坛和许多地方读到过 iOS 设备只允许 20
  • 获取对特定消息做出反应的用户列表

    我正在学习discord py 我正在尝试获取对特定消息做出反应的用户列表 名称 ID 下面是我的代码 async def ga self ctx channel ctx channel users async for message in
  • 使用 HTML Agility 搜索所需数据后如何从网页中抓取数据

    我想从中获取信息这个网站 使用 HTML Agility Pack 进入我的 ASPX 页面 但我不能这样做 因为数据是在我在网页中搜索数据后加载的 我需要在5分钟的间隔后连续完成一些数据 您提到的网站中的搜索结果是使用 Javascrip
  • 将减法结果限制为最小值为零

    我有一个向量 x 其值范围从 0 到 1 例如x lt c 0 0 5 1 我从 x 中减去 0 5 x 0 5 的结果x 0 5范围从 0 5 到 0 5 但是 我想将结果的最小值限制为 0 即新的范围将为 0 5 到 0 任何以前的负数
  • 使用 lcov 报告代码覆盖率时出错

    更新到 Ubuntu 16 04 后 我正在尝试对我的项目进行覆盖 我明白了 Deleted 665 files Writing data to coverage info cleaned lcov ERROR cannot write t
  • VS2010 中的 MFC100d.dll 问题

    我在 vs2010 上有一个 mfc c 项目 我可以在调试和发布模式下构建它 但是当我在调试模式下运行它时 它会给出以下 mfc100d dll 错误 我还安装了C 运行环境vcredist x86 exe问题仍然没有解决 我还设置了多线
  • JfreeChart:水平滚动 XYBarChart -(图表翻译和导航)

    我正在尝试水平滚动 XYBarChart 我正在关注 JfreeChart 的演示 TranslateDemo1 java 之一 您可以在其中找到源代码 源代码适用于 TimeSeriesChart 然而 我尝试使用 XYBarChart
  • Request.js 请求方法返回结果?

    var request require request var cheerio require cheerio request url function error response html if error response statu
  • 无法将 DBNull.Value 转换为类型“System.DateTime”。请使用可为 null 的类型

    这是我的代码 var finalResults from r in results AsEnumerable where r Field
  • window.open缓存问题

    我在用着窗口 打开在打开网页的函数中 该函数显示有关 当前页面 页面 URL 存储在 DB 中 某些页面需要身份验证 对于这些页面 我们第一次调用它们时 用户必须进行身份验证 但如果他关闭页面并再次打开它 则会显示缓存的页面 我尝试将时间添
  • 减去 Pandas 中两个不平衡的 DataFrame

    我有两个不平衡的 DataFrame 并且想通过减去值来创建第三个 DataFrame 以获得它们之间的增量 这是三个数据框的示例 我想用当前值减去相应的预期值来得到 DELTA 这按预期工作 当 CURRENT 和 EXPECTED 中的
  • 使用 c# 或批处理自动使用 winrar 提取 ISO

    我正在尝试将 ISO 提取到具有相同名称但末尾没有 iso 的文件夹中 我在使用 winrar 时遇到问题 因为当我从包含 ISO 的文件夹中开始搜索时 它不会启动提取 已更新答案代码 private void ExtractISO str
  • ajax - 新选项卡中的 pdf

    我正在使用 Laravel 我在 post 方法后得到一个 PDF 并使用 Ajax 发出此请求 成功后如何在新选项卡中显示此 PDF 当我不使用 Ajax 运行代码时 它可以工作 但是当我想用 Ajax 运行它时 我不知道如何在新选项卡中
  • Excel如何在不使用VBA的情况下从逗号分隔列表中查找匹配元素的所有行

    这是我的问题 我有一个包含两列的表 产品参考和相应的通知 ID A B C D 1 Product Notice 2 p1 n1 3 p2 n2 4 p3 n3 5 6 p1 p3 edi