NumbersでHTML特殊文字コードを自力で変換する方法【エクセル】

HTMLの特殊文字を大量にNumbersで一括変換するには?
クオーテーションマーク(")を上手く変換する方法は?
こんな疑問に答えます。

複雑なHTMLコードを作成したりする場合や大量生成する場合、表計算ソフトを使った方が早いです。
しかし…HTMLの特殊文字コードや記号があるせいで一度「変換」が必要になり、操作が複雑になることが多いです。
(<を&lt;に変えるとか)

僕はWordPressのブログでは月2万PV、自作のiPhoneアプリを2つリリースしています。
そんな僕が解説していきます。

作業環境

Numbers バージョン5.1(5683)
MacOSX High Sierra

1.HTML特殊文字とは?

HTML特殊文字とは、普段のHTMLの「代用品」として使える文字のことです。

「<」などの記号を表示させたい時に、「<」と直接書いてしまうと、「<br>」などが実際に発動してしまします。
発動しないように「&lt;」と書けば、内部で変換して「<」と表示してくれるというわけです。

文字参照とはHTMLなどのSGML文書においては、直接記述できない文字や記号(マークアップで使われる、半角の不等号「<」や「>」など)を表記する際に用いられる方法である
https://ja.wikipedia.org/wiki/文字参照より引用

2.自分でNumbers内で変換すると便利な点

冒頭でも書きましたが、自力でやるのには理由があります。

(1)大量コードの一括変換が可能

Webサービスでコピペするやつだと、1つずつしか変換できないです。
自分でやれば、一括変換可能です。

(2)一連の流れの中に組み込める

「HTMLの特殊文字を変換する」だけで、作業が済むことは実際は少ないです。
あれして、これして、「変換して」、あれして、これします。
表計算ソフトで自力でやれば、一連の流れの中に組み込めますね。

たとえば、プログラミングのコードが入った記事のHTML文章などです。
コードを書いて、HTMLも含めて編集して、特殊文字にして、操作して、HTMLに戻して、webにアップロード。
みたいな感じですね。

 

Webサービスだと大量のコードの一括変換は面倒

自分でやらなくても、「HTMLの特殊文字を変換できるWebサービス」もあります。
でもWebサービスだと大量のコードの一括変換は面倒です。
あとWebサービスだと一連の流れの中に組み込めないんですよね。

 

3.変換するべき文字を選抜する

まず、変換すべき文字を、自分で選抜します。

HTML特殊文字 HTML通常
÷ /
&amp; &
&lt; <
&gt; >
&quot; “(※)

今回、この僕はこの5つを変換する必要がありました。
(というか、この5つくらいしか使わなくね?)

「"」は式では""と2つ書きます。
詳しくは、下に書きました。

変換対応表はこちらのwikiにあります。

文字参照(wikipedia)
https://ja.wikipedia.org/wiki/文字参照

4.実際の式(SUBSTITUTEを使う)

実際の式です。
SUBSTITUTE関数を使います。

結論から言うと、5つ全部変換するにはこうです。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"÷","/"),"&amp;","&"),"&lt;","<"),"&gt;",">"),"&quot;","""")

この式を適用すれば、A2のセルに入っていたHTML特殊文字で書かれた文書を、通常のHTMLに戻せます。

4−1.SUBSTITUTE関数の基本

SUBSTITUTE関数の基本から見ていきましょう。

SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])
https://support.office.com/ja-jp/article/substitute-関数-6434944e-a904-4336-a9b0-1e58df3bc332より引用

つまり、B2セルに存在する「りんご」を「みかん」に置き換えるにはこうです。
(最後の置換対象は「B2内でx番目に現れたりんご」などと指定する場合です)

=SUBSTITUTE(B2,"りんご","みかん")

4−2.SUBSTITUTE関数を複数使う時の基本

複数使う時は、このように入れ子構造になります。
こうやって、改行するとわかりやすいでね。

SUBSTITUTE (
    SUBSTITUTE (
        SUBSTITUTE ( 'Table'[Column1], "Trust", "One" ),
        "Foundation",
        "One"
    ),
    "Endownment",
    "One"
)

https://community.powerbi.com/t5/Desktop/substitute-multiple-values/td-p/50217より

改行をやめると、こうですね。

SUBSTITUTE (SUBSTITUTE (SUBSTITUTE ( 'Table'[Column1], "Trust", "One" ),"Foundation","One"),"Endownment","One")

https://community.powerbi.com/t5/Desktop/substitute-multiple-values/td-p/50217より

4−3.Numbersにコピペする時の注意

(1)文字化け注意

コピペする時に、「"」が「”」に文字化けしやすいです。
(非常に似ていますが、違います。)

特にEvernoteを経由してコピペすると、文字化けしやすいので注意しましょう。
しかも、全部じゃなくて、一部だけ文字化けしたりするので非常に謎です。

(2)数式のペーストは、マウス右クリックから行う

いざ、Numbersで数式を入力する時も注意です。
このブログから、上の数式コピーして「Ctr+V」でペーストしようとしても、貼り付けられません。

Numbersで、数式をペーストする時はマウスで右クリックしてペーストする必要があります。
なんでマウス限定なんでしょうね。
他の操作との兼ね合いかな。

5."(クオーテーションマーク)はどうすればいいか問題

まだ、注意点があるんですね…
クオーテーションマークについてです。
これはかなりの難題です。

このクオーテーションマークですが、表計算ソフトの式に使われてるんですね。

ああああああ、話がややこしくなってきました。
やややこしやーーー

HTMLで使われている文字を避けるために、HTML特殊文字を使うために、立式するために使う文字が表計算ソフトの文字と被っているんです…
はあああ??
これ以上、考え込むと混乱しそうです。

ま、結論から言うと、「"」を二つ重ねて「""」にすると大丈夫とのことです。
なので以下のように、末尾の部分は"が重なっています。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"÷","/"),"&amp;","&"),"&lt;","<"),"&gt;",">"),"&quot;","""")

こちらを参照しました。
(公式の説明が僕の能力では見つけられませんでした)

How to create strings containing double quotes in Excel formulas?
https://stackoverflow.com/questions/216616/how-to-create-strings-containing-double-quotes-in-excel-formulas

というわけで今回は以上です。

たかがエクセル、たかが表計算ソフト…と舐めていました。
プログラミングや、HTMLが絡んでくると、「記号」が複雑になってきますね。
人間が決めたルールなのに、「記号」が被ってるせいで、なんか大変だなと思いました。

-Numbers