文字列の検索(Excel)

社員から色々と相談を受けます。

社員「これさ、検索するか、フィルターで1つ1つ調べてまとめるしかないよね?」

おもむろにノートパソコンを持ってきて、声をかけられます。はいはい、見ます見ます。さて、どんな内容なんでしょうか。

1製品に対し、1行に製品の「型番」と「産地」が記載された表があります。「型番1」~「型番20」まで横にずらっと20個もありました。

画像3

で、ほとんどが「A123」のように「A」で始まる型番らしいのですが、まれに「Z」で始まる型番があるようです。で、この「Z」で始まる型番を取り出したいようです。
条件付き書式で「Z」で始まる型番は赤太文字にして見た目で分かるようにしたようなのですが、それを20個の型番から取り出してまとめるのに苦労しているとの事。なるほどー

シートを追加してみる

おそらく、色々なやり方があると思いますが、この手の時、私はシートを追加してみたりします。シートをコピーして、縦横のタイトルだけ残し、データは削除しました。

画像3

そして式を書き込みます。

画像3


セルC2とセルD2に書き込んで、他のセルにもコピーします。
まずはセルC2から。①記載の通り、=IF(LEFT(Sheet1!C2,1)="Z",Sheet1!C2,"") です。
IF関数なので、IF(ア=イ,ウ,エ)のような形です。ア=イならウ、そうでなければエですね。そこで、アにあたる、LEFT(Sheet1!C2,1)の部分は、Sheet1!C2の左から1文字目って事で、これが、イにあたる"Z"なら、ウにあたるSheet1!C2の値を持ってきて、そうでなければエにあたる ””(空白)にしなさいよって事ですね。
今、書き込んでいるのがセルC2なので、それと同じ位置のSheet1のセルC2の値がZで始まるなら、その値を持ってきてねーと言う式です。

続けて、隣りの②ですが、IF(C2="","",Sheet1!D2)となっています。①で調べたセルC2が ””(空白)なら ””(空白)に。””(空白)じゃないなら、Sheet1の(同じ位置の)セルD2の値を持ってくる式ですね。

これらのセルC2とD2を、③の通り、全体にコピーしています。
これで、追加シート(Sheet1 (2))は完成です。

まとめ用のシートをもう一つ追加

これで準備ができたので、これらをまとめていくのですが、ついでにもう1回シートコピーをして、A列B列だけ残してC列~E列のタイトルを変更して整えました。

画像4

そして、式を書き込みます。

画像5

今回のデータでは、いくつか前提と言うか特徴と言うかルールがあるため、それに則って作っています。そのルールを早く見つけて、どの関数を組み合わせれば解決するのか見極めるのも慣れですね。
今回は、下記2つのルールがありました。
・型番が4文字
・1行に「Z」が1つしか出てこない
それらを考慮して、最後のまとめのシートSheet1 (3)では、次のようにしました。
①C列にSheet1 (2)の1行を連結する
②連結した①の左から4文字を取り出す
③連結した①の左から5文字目以降を取り出す

順番に見ていきましょう。
まずは、①の式ですが、セルC2において、=CONCAT('Sheet1 (2)'!C2:AP2)と書きました。CONCATは連結する関数です。単純に範囲内の文字列を横につないでいく関数です。'Sheet1 (2)'!C2:AP2を連結するので、Sheet1 (2)の同じ行に「Z」があれば、「Z123アメリカ」みたいな形になります。Sheet1 (2)の2行目は「Z」がないため空白ですね。
3行目は、C3:AP3まで結合して「Z557チャド」と言う形です。(チャドってどこだw)

続いて、②の式ですが、セルD2において、=LEFT(C2,4)なので、先ほど結合した①の左から4文字を持ってきています。

最後に③の式ですが、セルE2において、=MID(C2,5,100)と書いてますが、同様に結合した①の中から、左から5文字目をスタートとして、100文字を持ってきなさいと言う式です。実際100文字も無いので、要は5文字目以降、全部持ってきてねと言う意味です。
これを下までコピーしたら完成ですね!

いかがでしたでしょうか?社員にも懇切丁寧に説明しましたが、「おお、ありがとう」と言って、やり方までしっかり理解したかは定かではありませんw
おそらく色々なやり方があると思います。関数の組み合わせも様々と思います。考え方の1つとして参考にしていただければ幸いです。

この記事がどなたかの参考になれましたら幸いです。
また近々投稿したいと思います。
最後まで読んでいただき誠にありがとうございました。

この記事が気に入ったらサポートをしてみませんか?