ExcelでURLを扱うとき、日本語やスペースが含まれるとリンクが正しく動かない――そんな経験はありませんか。
手作業でURLエンコードするのは面倒ですし、変換ミスも起きやすいですよね。
ExcelのENCODEURL関数を使えば、文字列をURLエンコードした結果を一発で取得できます。この記事では、基本的な使い方からWEBSERVICE関数やHYPERLINK関数との連携パターンまで解説していきます。
ExcelのENCODEURL関数とは?
ENCODEURL関数は、文字列をURLエンコードする関数です。読み方は「エンコード・ユーアールエル」です。
「ENCODE」は「符号化する」、「URL」は「Uniform Resource Locator(ウェブアドレス)」を意味します。つまり「URLに使える形式に変換する」関数ですね。
URLエンコードとは
URLエンコード(パーセントエンコーディング)とは、URLに使えない文字を %XX の形式に変換する仕組みです。
たとえば、日本語の「エクセル」をURLエンコードすると %E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB になります。半角スペースは %20 に変換されます。
ブラウザのアドレスバーでは日本語がそのまま表示されることもあります。しかし、実際の通信ではURLエンコードされた文字列が使われていますよ。
ENCODEURL関数はUTF-8でエンコードし、RFC 3986 / RFC 2396に準拠しています。
ENCODEURL関数の書き方(構文と引数)
基本構文
=ENCODEURL(文字列)
引数は1つだけなので、覚えやすい関数です。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 文字列 | 必須 | URLエンコードしたい文字列を指定する |
引数には、直接文字列を入力する方法とセル参照で指定する方法があります。文字列を直接入力する場合は、ダブルクォーテーション(")で囲む必要がありますよ。
ENCODEURL関数の基本的な使い方
文字列を直接指定する
URLを直接入力してエンコードする、もっともシンプルな使い方です。
=ENCODEURL("https://mashukabu.com/売上レポート.xlsx")
この数式を入力すると、以下の結果が返ります。
https%3A%2F%2Fmashukabu.com%2F%E5%A3%B2%E4%B8%8A%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88.xlsx
URLの中の日本語「売上レポート」や、スラッシュ(/)、コロン(:)がすべてパーセントエンコーディングに変換されているのがわかりますね。
セル参照で指定する
実務では、セルに入力されたURLをまとめてエンコードするケースが多いです。
=ENCODEURL(A2)
A2セルに 東京都 渋谷区 と入力されている場合、結果は %E6%9D%B1%E4%BA%AC%E9%83%BD%20%E6%B8%8B%E8%B0%B7%E5%8C%BA になります。半角スペースが %20 に変換されている点に注目してください。
日本語をエンコードする
検索クエリに日本語を使う場面で便利な使い方です。
=ENCODEURL("Excel 関数 使い方")
結果は Excel%20%E9%96%A2%E6%95%B0%20%E4%BD%BF%E3%81%84%E6%96%B9 です。英数字はそのまま残り、日本語と半角スペースだけがエンコードされます。
ENCODEURL関数の実務活用パターン
基本がわかったところで、実務で役立つ組み合わせパターンを紹介します。
WEBSERVICE関数と組み合わせてAPI連携する
ENCODEURL関数の最も実用的な使い方が、WEBSERVICE関数との連携です。WEBSERVICE関数(Webサービスからデータを取得する関数)とFILTERXML関数(XMLデータから特定の値を抽出する関数)を組み合わせると、ExcelからWeb APIのデータを直接取得できます。
=WEBSERVICE("https://api.example.com/search?q=" & ENCODEURL(A2))
A2セルに検索キーワードを入力するだけで、APIにリクエストを送れます。日本語のキーワードもENCODEURL関数が自動でエンコードしてくれますよ。
さらにFILTERXML関数を加えると、取得したXMLデータから必要な部分だけを抜き出せます。
=FILTERXML(WEBSERVICE("https://api.example.com/data?q=" & ENCODEURL(A2)), "//result/value")
HYPERLINK関数でリンクを自動生成する
HYPERLINK関数と組み合わせれば、日本語を含むURLでも正しく動くリンクを自動生成できます。
たとえば、商品名が入ったセルから検索リンクを作るケースを考えてみましょう。
=HYPERLINK("https://www.google.com/search?q=" & ENCODEURL(B2), "検索する")
B2セルに「Excel ENCODEURL」と入力すると、クリックでGoogle検索が開くリンクが作成されます。商品リストから一括で検索リンクを生成したいときに便利ですよ。
文字列関数と組み合わせてURLを構築する
SUBSTITUTE関数やCONCATENATE関数、TEXTJOIN関数と組み合わせると、複雑なURLも柔軟に構築できます。
たとえば、複数のパラメータを含むURLを組み立てる場合はこのように書きます。
="https://example.com/api?name=" & ENCODEURL(A2) & "&city=" & ENCODEURL(B2)
A2に「田中太郎」、B2に「東京都」と入力すれば、パラメータごとに正しくエンコードされたURLが完成します。
ENCODEURL関数の対応環境と注意点
対応バージョン一覧
| バージョン | 対応状況 |
|---|---|
| Microsoft 365 | 対応 |
| Excel 2024 | 対応 |
| Excel 2021 | 対応 |
| Excel 2019 | 対応 |
| Excel 2016 | 対応 |
| Excel 2013 | 対応(初搭載) |
| Excel 2010以前 | 非対応 |
ENCODEURL関数はExcel 2013で追加された関数です。お使いのバージョンが対応しているか確認しておきましょう。
Mac版・Web版では使えない
ENCODEURL関数はWindows OSの機能に依存しています。そのため、以下の環境では使用できません。
- Excel for Mac: 関数ギャラリーには表示されますが、結果を返しません
- Excel for the web(Excel Online): 利用不可
Mac版をお使いの場合は、オンラインのURLエンコードツールを利用するか、VBAで代替する方法を検討してみてください。
チルダ(~)のエンコードについて
ENCODEURL関数はチルダ(~)を %7E にエンコードします。現在のRFC 3986ではチルダは非予約文字(エンコード不要)ですが、旧仕様のRFC 1738に準拠した挙動になっています。
ほとんどのWebサーバーは %7E を正しく処理するので、実用上は問題ありませんよ。
よくあるエラーと対処法
#VALUE!エラー
引数に無効なデータ型を指定した場合に発生します。数値やエラー値ではなく、文字列またはセル参照を指定してください。
WEBSERVICE関数と組み合わせた場合、エンコード後のURLが2,048文字を超えると #VALUE! エラーになることがあります。長いURLを扱うときは注意しましょう。
#NAME?エラー
以下のどちらかが原因です。
- 関数名のスペルミス:
ENCODEURLを正確に入力しているか確認してください - 非対応バージョン: Excel 2010以前では ENCODEURL関数が使えません。バージョンを確認してみてください
Mac版やWeb版で #NAME? エラーが表示される場合も、環境が非対応であることが原因です。
まとめ
ExcelのENCODEURL関数の使い方を解説しました。ポイントをおさらいしましょう。
- ENCODEURL関数は
=ENCODEURL(文字列)の1引数だけで使えるシンプルな関数 - 日本語やスペースを含む文字列を
%XX形式にURLエンコードできる - WEBSERVICE関数 + FILTERXML関数と組み合わせるとExcelからAPI連携が可能
- HYPERLINK関数との併用で、日本語を含む検索リンクを自動生成できる
- 対応環境はWindows版のExcel 2013以降。Mac版・Web版では使えない
URLを手作業でエンコードしている方は、ぜひENCODEURL関数を試してみてくださいね。
