プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
宜しくお願いいたします。

仕事で使うファイルを社内システムからダウンロードすると、CSVファイルになります。
そのCSVファイルをエクセルで開くと、
ひとつのセルの中にHTMLタグが入った状態になります。

例:
<head> aaaaaa</head><body> bbbbbb</body><link>cccccc </link>

入力されているHTMLタグは、すべて共通ではなくて、ものによって変わります。
(上記の例だと、<body>がないものもあります)
それから、同じタグがいくつも含まれているものもあります。
(上記の例だと、<body>がいくつもあるというようなケースです)

エクセルの分割機能や関数で抜き出せないかと思ったのですが、
私の知識では上手くいきませんでした。
いまは件数が少ないので目視で必要情報を手作業でコピペしたり、確認したりしていますが、
今後、件数が増える見込みなので、とてもそれでは作業が追い付きません。

これを下記のいずれかにすることはできないでしょうか?

1.たとえばA1には「head」の情報を、B1には「body」の情報を……という状態のエクセルにする。
2.1が難しい場合はせめて「body」の情報だけひとつのセルに抜き出す。(「body」がない場合は空欄かna、「body」が複数ある場合はひとつのセルに複数入れるか、最初のひとつだけが入れる)
3.HTMLタグがない状態で見られるようにする。(CSVファイルの情報をコピペすると、変換されるようなイメージです)

詳しい方宜しくお願いいたします。

A 回答 (4件)

No3です。



今見たら、回答の式にゴミが混ざってしまっていたようです。
すみません。 訂正しておきます。

関数の場合のB2セルの式は
 =IFERROR(SEARCH("</",A1,1),"")
が正しいです。
    • good
    • 0

こんにちは



No1様の回答がもっともだと思いますが・・・

>そのCSVファイルをエクセルで開くと、
>ひとつのセルの中にHTMLタグが入った状態になります。
CSVと言いながら、セパレータが存在しないということですよね?
(ファイル形式もおかしな気がしますが・・)

実際のデータ構造が不明ですが、ご例示のように単純なタグ形式の連続で1階層しかない(=ネストはない)と仮定してもよいのなら、文頭から順に「<」や「>」あるいは「</」を検索して、文字列を分解してゆけば手操作でも関数でも可能と思います。
(No2様の回答のように正規表現を利用したほうが簡単そうですが・・)


以下、ご参考までに。
◇手操作で行う場合
1)編集-置換で「<*>」を「,」に全て置換する
2)続いて、同様に「,,」を「,」に置換する
この結果、ご例示のデータであれば、「, aaaaaa, bbbbbb,cccccc ,」のようになります。
3)データ - 区切り位置 を利用して、上記のデータを「,」で分解する

※ マクロ化したければ、上記操作をマクロの記録に取れば、再利用可能と思います。


◇関数利用の場合(添付図参照)
(A1セルに文字列があるとして)
A2セルに
 =IFERROR(MID(A1,B2+2,LEN(A1)),"")
B2セルに
 =IFERROR(SEARCH("</",A1,K1+1),"")
C2セルに
=IFERROR(MID(MID(A1,SEARCH("<",A1,1),B2-SEARCH("<",A1,1)),SEARCH(">",MID(A1,SEARCH("<",A1,1),B2-SEARCH("<",A1,1)),1)+1,LEN(A1)),"")
を入力して、A2:C2を適当なところまで下方にフィルコピーしてあります。
この結果、C列にタグの内容だけが表示されます。
「HTMLタグのあるCSVファイルを利用す」の回答画像3
    • good
    • 0

そんな上手い方法は無いでしょう。


タグを外して、本体の文章だけにしたいという事なら、VBAです。

"<"の次に出現する">"までを"<"と">"を含めて削除。
これを自動で繰り返す処理を作ったら如何ですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
そういうやり方はないんですね。わかりました。
それを確認できただけでも助かりました。

お礼日時:2023/03/19 15:55

そもそも論なのですが、CSVファイルのような汎用データー形式にHTMLタグを使うような、その「社内システム」を見直すべきではないかと思います。

CSVファイルとしてダウンロードできる時点で、加工が不要で汎用的なデーター形式で出力できるのが本筋だと思います。
    • good
    • 0
この回答へのお礼

ご指摘ごもっともかと思います。
このタスクが今後も継続的に発生するようであれば、修正か新規構築かするための人員と予算が組まれてると思いますが、現在のところ、そこまでは至っておりません。
「今後、件数が増える見込み」と書きましたが、それは私個人の見立てで、マネジメントチームは現実にそうなってから考えるという意向でいます。
そういうわけで、現在の状態のファイルで、必要情報を抜き出せればと、悩んでおります。

お礼日時:2023/03/19 15:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!