商品コードが含まれているデータのみを抽出!(正規表現) #Excel #LifeHacks #Office
私がよくやるのは、「お問い合わせ内容」みたいに文章が長い列から、商品コード(例:ABC-1234、DEF-5678)が含まれる行だけを別表に抽出する方法です。手作業でフィルター検索すると漏れが出やすいので、数式だけで自動化しておくとかなり楽でした。 ■ まず前提:商品コードの“型”を正規表現で決める 今回の例は「大文字アルファベット3文字」+「-」+「数字4桁」なので、パターンはこれです。 [A-Z]{3}-\d{4} ■ 行を丸ごと抽出:FILTER × REGEXTEST たとえば、一覧シートで A列=日付、B列=氏名、C列=お問い合わせ内容 だとして、2行目〜1000行目までを抽出するならこんな感じにしました。 =FILTER(一覧!A2:C1000, REGEXTEST(一覧!C2:C1000, "[A-Z]{3}-\\d{4}"), "") ポイントは、\d を使う場合に「\\d」とエスケープが必要なことがある点です(環境によってハマりました)。うまくいかない時は、まず数字部分を [0-9]{4} に変えてみると切り分けしやすいです。 ■ “含まれているかだけ”確認したいとき 抽出前に、コード有無をTRUE/FALSEで確認すると安心です。 =REGEXTEST(C2, "[A-Z]{3}-[0-9]{4}") これを下までコピーして、TRUEの行が想定通りか目視チェックしてからFILTERに進めました。 ■ 抽出した「商品コードそのもの」を取り出す(集計したい時) 行抽出だけだと、同じ行に複数コードがあるケースで集計しづらいので、まずはコードを別列に抜き出すこともあります。 =REGEXEXTRACT(C2, "[A-Z]{3}-[0-9]{4}") これで商品コード列を作ってから、ピボットやCOUNTIFで件数集計がしやすくなりました。 ■ パターンを少し柔らかくする例(現場でありがち) ・小文字も混ざる: [A-Za-z]{3}-[0-9]{4} ・ハイフンが全角/別記号の可能性: [-ー-] 例: [A-Z]{3}[-ー-][0-9]{4} ■ 重くなる時の対策(体感かなり大事) REGEXTESTは範囲が広いと重くなりやすいので、列全体参照は避けて「C2:C1000」みたいに行数を絞っています。データが増える運用なら、テーブル化して必要範囲だけ参照するのもおすすめでした。 最後に、正規表現の書き方が迷うときは「こういう文字列から、こういう形式だけ拾いたい」と例を添えてAIに聞くと一気に早かったです。私もパターン作りで詰まった時はその方法で時短しています。







