2

以下で指定されている2つのシート列を比較するにはどうすればよいですか?ただし、sheet1のlocation(column)の文字列の一部のみが、sheet2のLocation(column)の文字列の一部とのみ一致しますか?
1.sheet1のlocation(column)の最初の2文字とsheet2のlocation(column)の最初の2文字のみが一致する必要があります。
2.sheet1のlocation(column)の任意の2文字とsheet2のlocation(column)の任意の2文字のみが一致する必要があります。助けてください

Location(sheet1)    Location(sheet2)     
____________________________________________
india- north        USxcs  
India-west          Indiaasd  
India- east         Indiaavvds  
India- south        Africassdcasv  
US- north           Africavasvdsa  
us-west             UKsacvavsdv  
uk- east            Indiacascsa  
uk- south           UScssca  
Africa-middle       Indiacsasca  
Africa-south        Africaccc  
Africa-east         UKcac  
4

1 に答える 1

-1

質問1では、MID関数を使用して、各セル値から最初の2文字を抽出し、それらを比較できます。

質問2については、あらかじめ決められた最大長の文字列を受け入れることができれば解決策があります。それはあまり良い解決策ではありません!ネストされたifステートメントを使用できます。基本的には、「ループの展開」です。この例では、セルA1とB1を、最大12文字のA1の長さで比較します。

=IF(IFERROR(FIND(MID(A1,1,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,2,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,3,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,4,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,5,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,6,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,7,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,8,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,9,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,10,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,11,2),B1,1),0)>0,TRUE,
FALSE
)
)
)
)
)
)
)
)
)
)
)

このアップデートをしてくれたJamesJenkinsに感謝します

古いバージョンのExcelには、ネストされた関数が7つに制限されているようです。隣接するセルの数式をチェーン化することで、これを回避できます(スプレッドシートをさらに醜くすることを気にしない場合)。実際、本当にクリエイティブになりたい場合は、列インデックスを使用して検索のオフセットを計算できます。たとえば、次のようになります。

=IF(IFERROR(FIND(MID($A1,(COLUMN(C1) - 3) * 6 + 1, 2), $B1, 1),0)>0,TRUE,
...repeat with +2, +3, +4, +5
if(D2 = FALSE, FALSE, TRUE)
)))))))

次に、文字列の長さを増やす必要がある場合は、列を正しくコピーできます。隣接する列が空白の場合、最も内側の「if」はTRUEまたはFALSEの値を強制する必要があることに注意してください。

于 2012-09-12T11:17:50.440 に答える