过滤字母组合

Posted

技术标签:

【中文标题】过滤字母组合【英文标题】:Filtering letter combinatons 【发布时间】:2017-08-06 18:44:52 【问题描述】:

您好 - 我正在为以下问题寻求帮助。 我有一个实用程序,可以为我提供一组字母(或值)的所有组合。这是 8 选择 n 的形式,即有 8 个字母,我可以为不超过 4 个字母的序列生成所有组合。所以 n 可以是 2、3 或 4

现在这里有点复杂:8 个字母由三个列表或组组成。因此,A,B,C,D;E1,E2;F1,F2

正如我所说,我可以毫无问题地获得所有 2、3 和 4 序列。但是我需要过滤它们,以便获得组合(或者更确切地说可以过滤结果),其中我只想要结果中的字母,以确保我(在 n=2 条件下)从 A、B、C、D 中获得至少一个一个来自 E 集或 F 集。

因此,举几个例子,其中 n=2

AE1 或 DF2… 正常,但 AB 或 E1E2 或 E1F1… 不正常

当 n=3 时,规则略有不同,但原理相同

ABE1、ABF1、BDF2 或 BE2F1… 正常,但 ABC、ABD、AE1E2、DF1F2 或 E1E2F1… 不正常。

同样,n=4

ABE1F1、ABE1F2… 正常,但 ABCD、ABE1E2、CDF1F2 或 E1E2F1F2… 不正常。

我使用不同的公式(例如 Match 和 Countif)尝试了一些事情,但无法完全弄清楚。因此,非常感谢您的帮助。

乔恩

【问题讨论】:

【参考方案1】:

我一直在尝试找到一种解决这个问题的方法,以消除它的一些混乱。有两个因素让这件事处理起来有点尴尬

(a) Combination of single letters and bigrams (digrams?)

(b) Possibility of several different letters / bigrams at each position in the string.

可以通过将字母或二元组分为三组或三类来处理这两个问题

(1) Letters A-D - let's call this group L
(2) First pair of bigrams E1 & E2 - let's call this group M
(3) Second pair of bigrams F1 & F2 - let's call this group N.

然后我们可以列出允许的组组合,据我所知是这样的

对于 N=2

LM
LN

对于 N=3

LLM
LLN
LMN

对于 N=4

LLMN

(我不知道是否允许LLLM等,但可以添加这些)

我将做一个很大的假设,即 OP 中提到的实用程序不会生成像 AAAA 或 E1E1E1E1 这样的字符串,否则它将毫无用处,您最好从头开始。

所以你只需要一个看起来像这样的替代品

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"A","L"),"B","L"),"C","L"),"D","L"),"E1","M"),"E2","M"),"F1","N"),"F2","N")

并在允许的模式列表中查找

=ISNUMBER(MATCH(B2,$D$2:$D$10,0))

并过滤查找值为 TRUE。

【讨论】:

非常感谢您关注此问题。我会检查一下,看看它是否在周末有效 - 看起来是在正确的范围内。 谢谢你,它对我的​​数据非常有效——你对无用组合的假设是正确的。不过,我现在需要做的是,因为它对所使用的字母非常具体,所以将它扩展到任何分组。所以,仍然有三个组(即导致LMN),如果不是ABC,我可能有PQX 或其他东西。其他组也采用同样的方法。 好的,这个想法基本上可行。使其更通用的主要症结在于 SUBSTITUTE 已经很长并且非常特定于您正在使用的符号集。如果您有最新版本的 Excel,您可以使用 TEXTJOIN 连接字母数组以更灵活地构建分类模式,这可能会容易一些。 当然,您可以将单元格引用放在 SUBSTITUTE 中,而不仅仅是文字,例如 SUBSTITUTE ...A2,X1,Y1),X2,Y2)... 其中 cols X 和 Y 包含值你想替换。 后一种方法效果很好(我之前因为尝试使用 SUBSTITUTE(A2, X1:Y2...) 形式而陷入困境......但无论如何,虽然少用会很好'SUBSTITUTE' 因为随着您添加更多内容而变得有点混乱,解决方案正是我所需要的。非常感谢您的帮助 - 以及最后的澄清。

以上是关于过滤字母组合的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)

求一个正则表达式,要求 数字,大写字母,小写字母,特殊字符 至少两种或两种以上组合的正则表达式。

英语字母组合发音,全一点

密码6到16位数字和字母组合

自然拼读法有多少个字母组合(如oo所对应的音标是i:)这样为一组。能把各个组合所对应的音标告诉我吗

VBA代码求助,遍历相同的字母组合?