000 から 999 までの 3 桁の数字のリストで、少なくとも 2 桁が同じ数字を識別できるようにする必要があります。数式について教えてください。
試してみました=IF(LEFT(A98,1) = "LEFT(A98,2)"OR LEFT(A98,2) = "LEFT(A98,3)" OR LEFT(A98,1) ="LEFT(A98,3)" , "0","1")
が、Excel にあまり詳しくなく、この数式は受け入れられませんでした。
答え1
それは実際にはそれほど遠くないのです。
比較には 1 つの文字だけでなくすべての文字が使用されるため、MID()
の代わりに を使用します。LEFT()
LEFT()
不要な引用符を削除すると、動作するはずです。
IF(OR(MID(A98,1,1)=MID(A98,2,1),MID(A98,1,1)=MID(A98,3,1),MID(A98,2,1)=MID(A98,3,1)),"1","0")
私が書いた内容を完全に理解し、誤字脱字があったり括弧を忘れていたりした場合に訂正できるようにしてください。確認するためのコンピューターがここにはなく、携帯電話で入力しています。
答え2
Aganju の答えは、おそらくあなたが探している答えでしょう。しかし、多くの場合、Excel の問題の解決策は、さまざまな方法で検討することによって得られます。ここでは、少し異なるアプローチと、覚えておいて損はないアイデアをいくつか紹介します。
左、右、中央
すべてが 3 桁なので、次のように数字を考えた方が簡単だと思います。
LEFT(A98,1)
MID(A98,2,1)
RIGHT(A98,1)
単なる個人的な好みですが、ここではそれらの関数の使用方法を説明します。左端の 1 文字、位置 2 から長さ 1 の中央、右端の 1 文字です。
逆転の発想
一致する数字の組み合わせを見つける方向からアプローチしました。そのためには、IF、OR、AND の組み合わせが必要です。反対方向からアプローチする場合は、除外する条件が 1 つだけあります。つまり、数字がすべて異なることです。その単一のケースのテストは、より簡単に行うことができます。
ブール演算
1
これを別のトリックと組み合わせます。または の結果を探しているので0
、すでに true と false を表すものについて考えています。0
およびのいくつかの数学的特性を使用できます1
。
- ゼロを掛けたものはゼロである
- ゼロを掛け合わせるとゼロになる
- 1を掛け合わせると1になる
- 0または1の積が1になる唯一の方法は、それらがすべて1である場合です。
それを一緒に入れて
Excel はtrue
、 and をandfalse
として扱います。そのため、IF、AND、OR を必要とせずに、次を使用できます。1
0
= (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
これにより1
、すべての数字が異なり、組み合わせが同じかどうかがわかります。これにより、物事が区別されます。ただし、質問で説明したように、逆になるはずだという考え方の場合は、その式をマイナスする0
ことで逆転できます。1
= 1 - (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
また、0
or1
値は論理テストによって直接生成されることに注意してください。評価条件に基づいて結果にこれらの値を割り当てる必要はありませんでした。
答え3
@fixer1234 のLEFT
MID
&RIGHT
とゼロ乗算のアイデアを使用した、少し異なる別の方法を以下に示します。
=IF((LEFT(A99,1)-MID(A99,2,1)) * (LEFT(A99,1)-RIGHT(A99,1)) * (MID(A99,2,1)-RIGHT(A99,1))=0,1,0)
いずれかのペアが等しい場合、乗算の結果は 0 になり、乗算の結果はIF
1 になります。