ここから本文です

ExcelのVBA勉強中の者です。 文字列の抽出で困っているので、アドバイス頂きた...

qas********さん

2019/3/821:27:39

ExcelのVBA勉強中の者です。

文字列の抽出で困っているので、アドバイス頂きたく投稿しました。

現在、「部品名1」 X 「部品名2」 X 「部品名3」という文字列から、
各「部品名」を抽出し、指定したセルに表示させる機能を作りたいと思っています。

基本は各「部品名」の間に、半角スペース、大文字のX、半角スペースで区切りがついています。
しかし、入力ミスにより半角スペースがなかったり、小文字のxになっていたりして、困っています。

※現在、Excel関数を使用し、入力ミスがない場合の文字列から各「部品名」抽出はできていますが、上記の理由やメンテナンス性が悪いという事でこれを機にVBAを学ぼうかと思いました。
また、現在は大文字のXを検出しそこから部品名を抽出しているのですが、部品名に大文字のXが含まれている場合があり、その場合はやはり上手くいきません。

目標とする機能としては、入力ミス(半角スペース無、小文字のx)や「部品名」に大文字のXが含まれている場合でも正しく「部品名」を抽出し、指定セルに表示させる。
ということになります。

このような機能を実現するためにはどのようなVBA関数、構文を使えば良いでしょうか?
当方、学生時代にC言語をかじった程度の知識しかなく、皆様からアドバイス、ヒントを頂ければと思います。
よろしくお願いします。

閲覧数:
58
回答数:
1

違反報告

ベストアンサーに選ばれた回答

set********さん

2019/3/823:07:21

関数式を使う方法ですが、下の図のようなことでどうでしょうか?
部品名の中に、大文字のXはあっても、小文字のxはない、という前提です。

B1セルには、
① =TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE($A1,CHAR(120)," X "))," X ","ゝ")," X","ゝ"),"X ","ゝ"),"ゝ",REPT(" ",100)),100*COLUMN(A:A)-99,100))
の式を入れて、右と下にオートフィルしています。

関数式を使う方法ですが、下の図のようなことでどうでしょうか?...

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる