2017-05-19 25 views
0

我已經得到了包括無序子的相互匹配的問題:最容易攤開來第一次,我認爲:搜索按隨機順序多子在谷歌表

Qualification Requirements  
Silver B2 and R5 and Z3  
Gold Z3 and R4 and B3  
Platinum (B2 and R6) or (Z3 and B6) 

Candidates Codes Qualifications 
Fred R3 Z5 Z3 B6 Platinum 
Joan Z3 R3 R4 B6 Platinum 
William Z3 B2 R4 R5 Silver 
Tanya B6 R4 Z3 B3 Gold & Platinum 
Sarah B5 R4 Z3 B1 No soup for you! 

的想法是,無論是候選人清單(和相關代碼)和資格要求將隨着時間的推移而變化。我原本希望用正則表達式替換資格要求列表(我認爲(?=。* B3)(?=。* Z3)或類似於「B3和Z3」的東西),然後在正則表達式中使用regexmatch一個vlookup或其他東西,但它需要一些正則表達式功能(lookahead),我相信這些Shee​​ts正則表達式工具沒有。可能還有另一種方法可以做到這一點,但這並不是我想到的,因此歡迎所有的建議! 限制,如果它們不明顯: 每個候選人的代碼列表將是無序的,並且可能滿足零個或多個資格要求。如果資格要求具有一定的可讀性,並且它們必須具有和/或分組能力,那將是一件好事。至少,這是我的願望清單。

謝謝!

回答

0

這還不是最完美的解決方案,但它的工作原理。 (AND(RegExMatch(B2,「Z3」),RegExMatch(B2,「B2」),RegExMatch(B2,「R5」))在代碼右側的列中放置此對於黃金:

= IF , 「銀」, 「」)

在列向的,正確的把這個銀:

= IF(AND(REGEXMATCH(B2, 「Z3」),REGEXMATCH(B2, 「R4」 ),REGEXMATCH(B2, 「B3」)), 「金」, 「」)

在列向的,正確的把這個白金:

= IF(或(AND(REGEXMATCH(B2 ,「B (RegExMatch(B2,「Z3」),RegExMatch(B2,「B6」))),「Platinum」,「」)

然後在到的是,右列把這個總獎勵:

=修剪(C2 & 「」 & D2 & 「」 & E2)

拖動公式下推。您可以隱藏金,銀和鉑金列。如果資質發生變化,應該很容易維護。

如果您想直接從資格要求獲得資格,替換這些上面的公式。他們認爲資格要求是在Sheet1:

=IF(AND(RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$2,"and","")," "),0,1)),RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$2,"and","")," "),0,2)),RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$2,"and","")," "),0,3))),"Silver","") 

=IF(AND(RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$3,"and","")," "),0,1)),RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$3,"and","")," "),0,2)),RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$3,"and","")," "),0,3))),"Gold","") 

=IF(or(AND(RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$4,"[()]*[or]*[and]*","")," "),0,1)),RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$4,"[()]*[or]*[and]*","")," "),0,2))),AND(RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$4,"[()]*[or]*[and]*","")," "),0,3)),RegExMatch($B2,index(split(REGEXREPLACE(Sheet1!$B$4,"[()]*[or]*[and]*","")," "),0,4)))),"Platinum","")