过滤字母组合
嗨 – 我正在寻找下列问题的帮助。 我有一个实用工具,给我一组字母(或值)的所有组合。 这是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。