过滤字母组合

嗨 – 我正在寻找下列问题的帮助。 我有一个实用工具,给我一组字母(或值)的所有组合。 这是8selectn的forms,即有8个字母,我可以产生序列的所有组合,我不想超过4个字母。 所以n可以是2,3或4

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

正如我所说,我可以没有问题地得到所有的2,3和4序列。 但我需要过滤它们,以便我得到组合(或更确切地说可以过滤结果),我只希望结果中的字母能够保证我得到(在n = 2条件下)至less有一个来自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,但不能完全弄明白。 所以,将非常感激任何帮助。

乔恩

我一直在试图find一个解决这个问题的方法。 有两个因素使得这个处理有些尴尬

(a) Combination of single letters and bigrams (digrams?) (b) Possibility of several different letters / bigrams at each position in the string. 

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

 (1) Letters AD - 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这样的string,否则这将是非常无用的,从头开始会更好。

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

 =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。

在这里输入图像说明