未だXMLは使われ続けています。
「データのやりとりはJSONでやれ」「XMLなど悪魔に拐われろ」ですって? きっとそうなのでしょう。ですがXMLを使ったシステムをメンテナンスする機会があるかもしれません。出力したXMLのデータが正しいか、つまり、電話番号がハイフン区切りか、IDが8桁かどうか、そういったことのチェックをしなければならぬ日もあることでしょう。その仕様書はおそらくExcelでしょう。
ExcelでXMLが捌けたら!
タグの中のデータだけ取り出せたら!
そんな夢を、Excelの関数だけで実現します。
完成品
=MID(LEFT(A3,FIND(">",A3)),2,LEN(LEFT(A3,FIND(">",A3)))-2)
- 値
=MID(A3,FIND(">",A3)+1,FIND("<",A3,2)-FIND(">",A3)-1)
完成に至るまで
※お暇な方だけお付き合いくださいませ。
タグ名
-
まずはタグ(例として
<id>
)を抜き出そう。<id>
が4文字だから、先頭から4文字抜き出そう。=LEFT(A3,4)
-
でも
<Name>
だと6文字になる。開始タグの文字数を調べよう。=FIND(">",A3)
-
これで開始タグは取り出せた。
=LEFT(A3,FIND(">",A3))
-
<>
を除去したい。2文字目 (I
)から2文字抜き出そう。=MID(A3,2,2)
-
でも
<Name>
だと4文字抜きださないと。タグの文字数-2(<>
の2文字分)でいいはず。=LEN(LEFT(A3,FIND(">",A3)))-2
-
完成
=MID(LEFT(A3,FIND(">",A3)),2,LEN(LEFT(A3,FIND(">",A3)))-2)
値
-
Mid
関数が使えそう。=MID(A3,5,7)
-
Mid()
の開始位置は開始タグの文字数+1でよさそう。=FIND(">",A3)+1
-
データ部の文字数は、閉じタグの
<
の位置 -(開始タグの文字数-1)
※Mid
関数の開始位置に1(先頭)を指定すると開始タグの<
がヒットするので、2以降を。=FIND("<",A3,2)-FIND(">",A3)-1
-
完成
=MID(A3,FIND(">",A3)+1,FIND("<",A3,2)-FIND(">",A3)-1)