表の中から、一番長い文字列を探し出す方法の紹介です。
必須なのはLEN関数(またはLENB関数)で、これにフィルターやMAX関数を組み合わせます。
今回は、下図をサンプルデータとして使用します。
LEN関数で文字数を表示させる
まずは、文字数を表示させるための作業場所を確保します。
今回は住所列(B列)の横、C列を文字数表示用の作業場所として使いましょう。
そして、文字数表示用の列の先頭(C2セル)に、横の住所の文字数を表示させる関数を入力します。
式:=LEN(B2)
あとはこれをオートフィルなり、コピーなりで最終行まで反映させます。
ここまでが準備となります。
フィルターを使って一番文字数の多い住所を探す
LEN関数を使って文字数を表示させてしまえば、あとは簡単です。
フィルター機能を使うと、一番文字数の多い住所がどこかわかります。
そして一番大きい数値にのにチェックを入れてOKを押せば、一番文字数の多い住所のみが表示されます。
MAX関数を使って一番文字数の多い住所を探す
フィルターのほかに、MAX関数を使って探し出す方法があります。
やり方は簡単で、さらに横(D1セル)に、C列の最大値を探し出すようにMAX関数の式を入力するだけです。
式:=MAX(C:C)
LENよりLENBの方が需要あるかも
今回、文字数の多い住所を探し出すということで、LEN関数を使ってきました。
ですが、データ整備などで、指定文字数以内におさめたくて、文字数を調べてるという場合、単純に文字数を数えるLEN関数ではなく、バイト数を数えるLENB関数のほうが適切かもしれません。
例えば、データベースの都合上20文字以内におさめて下さい。と言われるより、40バイト以内におさめて下さいと言われる事が多いためです。
そして、LEN関数とLENB関数については、小難しいことは置いといて、全角文字を1とするか、2とするかの違いだと覚えておけばひとまずOKです。
どちらの数字が必要か考え、用途に応じて、LEN関数とLENB関数を使い分けましょう。
MAX関数使う場合、実は作業域いらない
今回のやり方、LEN関数(またはLENB関数)で文字数を表示させたあと、その列内で最大値を探し出すという方法をとりました。
ですがこれ、実は1つの式にまとめる事ができます。
やり方は、MAX関数とLEN関数を組み合わせた式を入力した後、Ctrl+Shift+Enterで確定するだけです。
式:=MAX(LEN(B:B))
これをCtrl+Shift+Enterで確定すると、配列として扱われ、{=MAX(LEN(B:B))}というように、{ }で式が囲まれます。
何が起きてるのかというと、配列化したことにより、LEN関数の結果が、2,20,17,18,19・・・と、複数の結果を持つようになり、その中からMAX関数で最大値のみを表示させています。
ちなみにCtrl+Shiftを押し忘れたりなどで配列化に失敗していると、指定範囲の先頭部分でしかLEN関数が機能せず、正しい結果になりません。
今回の例では、タイトルにあたる住所という文字のみを文字数カウントしてしまうので、2という結果になってしまいます。
とまぁ、こんな方法を紹介をしてみたものの、オススメはしません。
オススメしない理由として
- 最大文字数がわかっても、それがどのセルなのかがわからない
- 配列を知らない人が多く式を壊される事が多い
- 自分が使っていても、うっかりCtrl+Shift押し忘れる事がある
- 押し忘れてもエラーになるわけじゃないので気づきにくい
などが挙げられます。
なので、あくまでも豆知識として。っという事で。
今回使った関数
LEN関数 – 文字数をかぞえる | エクセル小技集 (excelkowaza.com)
MAX関数 – 最大値を探しだす | エクセル小技集 (excelkowaza.com)
まとめ
なんでもかんでも1つの式にまとめりゃいいってもんじゃない。
コメント