【问题标题】:Check if strings in column start with any of the strings in an array?检查列中的字符串是否以数组中的任何字符串开头?
【发布时间】:2021-12-03 19:39:42
【问题描述】:

我有一列包含字符串。对于列中的每一行,我想检查字符串是否以数组中包含的几个字符串之一开头。这个数组可以包含任意数量的字符串来检查列。

我想要的输出是一个数组 {TRUE;FALSE;TRUE;TRUE;etc} 如果字符串以数组中包含的任何字符串开头,则返回 TRUE。

有人知道怎么做吗?谢谢!

为澄清而编辑: Office 365(版本 2109)。我不能共享电子表格本身,但该列包含像 {1.1;1.1.1;1.1.2;1.2;1.3;etc} 这样的值,并且有问题的数组是像 {1.1 ;1.2},所以我希望它知道在这种情况下列中的哪些单元格以 1.1 或 1.2 开头。所以它基本上是一个按层次排序的列表,无论给定的数据行是数组中的任何项的子项还是本身就是数组中的任何项,我都希望能够将其拉入数组中。

理想情况下,这将是一个仅限公式的解决方案,但如果有必要,我对 VBA 很满意。

示例数据

请记住,在实际数据中,B 列中有许多单元格,其中包含的不仅仅是两个条目。

【问题讨论】:

  • 这适用于什么版本的 Excel?你能发布一个带有预期结果的小例子吗?
  • Office 365(版本 2109)。我无法共享电子表格本身,但该列包含 {1.1;1.1.1;1.1.2;1.2;1.3*etc*} 之类的值,而有问题的数组是 {1.1;1.2} 之类的东西,所以我在这种情况下,希望它知道列中的哪些单元格以 1.1 或 1.2 开头。所以它基本上是一个按层次排序的列表,无论给定的数据行是数组中的任何项的子项还是本身就是数组中的任何项,我都希望能够将其拉入数组中。
  • edit在帖子中包含任何澄清。请包括数据模型和预期输出。还要注意您是否需要公式或 vba 并使用所需的方法正确标记它。
  • @ScottCraner 明白了,完成
  • 所以从“有问题的数组是 {1.1;1.2} 之类的东西”,我推断这些数组只包含数字,而不包含诸如“1.1.1”之类的条目,这需要作为字符串输入?

标签: excel vba excel-formula


【解决方案1】:

假设要检查的第一个条目在A1

=0+LEFT(A1,LEN(MyArray))=MyArray

放置在工作表中的某处,将产生一个与 MyArray 维度相同并包含所需布尔值的溢出数组。我让你来决定如何处理生成的数组。

【讨论】:

  • 啊,我认为这个解决方案是从后到前的?我不想检查数组是否有以它开头的列中的任何值,我想检查以数组中任何字符串开头的行的列,并将其输出为(非常长) 大批。如果这有助于您了解我需要什么,这将包含在 FILTER 公式中。
  • 也许更多的原因是您应该在问题中包含一个小示例输出?
【解决方案2】:

我们可以使用 MMULT 和 MATCH 来返回正确的数组:

=LET(
    lkprng,   FILTER(A:A,A:A<>""),
    depcll,   B2&CHAR(10),
    depclm,   FILTERXML("<a><b>"&SUBSTITUTE(depcll,CHAR(10),"</b><b>")&"</b></a>","//b"),
    dep,      TRANSPOSE(depclm&""),
    mtch,     --(ISNUMBER(MATCH(LEFT(lkprng,LEN(dep)),dep,0))),
    mmt,      MMULT(mtch,SEQUENCE(COUNTA(dep))),
              TEXTJOIN(CHAR(10),,FILTER(lkprng,mmt>0,"")))

【讨论】:

  • 啊,抱歉,这行不通。输入数组实际上是一个数组,而不仅仅是一个单元格列表(由将嵌套在该单元格中的公式生成)。而且我还需要输出在一个实际的数组中,因为这个位本身将嵌套在一个过滤器中:基本上这相当于一个约束,我需要输入是整个“A”列,在你的例子中,不只是 A1。
  • 如果你想模拟一下开始和你想要什么,我们可以提供更好的帮助,但是试图进入中间并猜测你要去哪里是很困难的。我们可能会找到比您尝试做的更好的方法。即,“我的床单上有这个,最后我想要这个。我从这里开始。”但请给我们完整的画面。
  • 当然,对不起,我是新来的,我不知道演习。这只是我无法解决一个非常复杂的问题的一部分,呵呵。但基本上这是关于在包含很长的分层组织需求列表的电子表格上设置依赖关系跟踪。我正在搜索的列是需求的 ID 号,输入数组包含它们所依赖的需求(即在开发此之前必须开发的需求)...
  • ...问题是,一些依赖关系是在父级别声明的,所以我必须能够识别该依赖关系的所有子需求。一旦我确定了作为所述依赖项的子项的所有需求,我将使用 FILTER 来执行此操作,但它专门标识了我不能执行的子项。
  • 再一次,您需要编辑您的帖子以包含一个以表格形式显示的模型作为起点。以及我们需要使用的输入模型。以及预期结果的模型。全部以表格形式。文字无法传达良好的数据模型和输出可以传达的细节。
猜你喜欢
  • 2023-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
相关资源
最近更新 更多