2017-03-15 51 views
0

嗨 - 我正在寻找以下问题的帮助。 我有一个实用工具,它为我提供了一组字母(或值)的所有组合。这是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列表查找。

enter image description here

+0

很多谢谢你的关注。我会通过它看看它是否在周末有效 - 看起来是在正确的场地。 –

+0

谢谢你,这对我的数据非常有用 - 并且你对无用组合的假设是正确的。然而,我现在需要做的是,因为它对于所使用的字母非常具体,所以扩展它用于任何分组。所以,仍然有三个组(即导致LMN),如果不是说ABC,我可能会有PQX或其他东西。对于其他团体来说也是一样的。 –

+0

好的,这个想法基本上可行。使其更为普遍的主要障碍在于SUBSTITUTE,它已经非常长,并且对于您正在使用的一组符号非常具体。如果您有最新版本的Excel,可以使用TEXTJOIN加入一组字母来更灵活地构建分类模式,这可能会更容易一些。 –