![見出し画像](https://assets.st-note.com/production/uploads/images/56309709/rectangle_large_type_2_cc814669269bfd759f5a5b918b027610.png?width=1200)
twitter で流れていた Excel の問題を解いてみる 2
今回のお題はこれです.早速やってみます.
【aaa】bbb_ccc_ddd
— かおてっく (@Kao_Tech_) July 7, 2021
VBAか関数でcccだけ取り出したいのにあたま混乱中🥺
一回では無理なのかな?
InstrとRight でccc_dddを取り出すのは可能だから、これをさらにLeftで取り出したらいいのかな?
データの準備
Excel でこんなデータを作って,
ALZETA にアップロードしました.
中身をプレビューすると,
データ加工(やり方1)
まず,どなたにも無理ない方法です.文字 '_' で分割していくやり方です.ALZETA の「項目分割」PM を接続して,赤枠のように設定します.
「オリジナル」というカラムのデータを '_' で分割して「項目1」というカラムと「項目2」というカラムを作ります.
「中間ファイル」PM を繋いでプレビューしてみますと,
いい感じですね.次は「項目2」を '_' で分割します.そのうち一つ目の項目が欲しいので「抽出対象」という項目名にします.ALZETA の「項目分割」PM を接続して,赤枠のように設定します.
プレビューすると,
あとは,余計な項目を外します.「並替」PM を使います.
できました.
データ加工(やり方2)
もう一つは,「文字列置換」PM を使うやり方です.「文字列置換」PM は,カラムのデータを直接書き換えてしまうため,まず「項目複製」PM でカラムを複製します.
プレビューすると,
次に「文字列置換」PM を使って,「抽出対象」カラムのデータを正規表現で一度に変換してしまいます.
「置換前」に入れてあるのは正規表現で,
^【.+】[^_]+_([^_]+)_[^_]+$
その意味は,
^: 先頭
【.+】: 【】に囲まれた1文字以上の部分
[^_]+: '_' という文字以外1文字以上
_: '_' という文字そのもの
([^_]+): '_' という文字以外1文字以上 ※() で囲うと,中身をあとで利用できる
_: '_' という文字そのもの
[^_]+: '_' という文字以外1文字以上
$: 末尾
という具合になっており,「置換後」に
\1
を指定することにより,「置換前」の () で囲った部分を取り出しています.
結果をプレビューすると,所望の結果が得られています.
この記事が気に入ったらサポートをしてみませんか?