Excel でリンク付きのセルから URL を抽出することはできますか?
「ハイパーリンクの編集」で表示されるアドレスをコピーできます。「マクロ」や「Officeスクリプト」で自動化も可能です
たとえば Webページ上に複数のリンクがあって一覧表示されているとき、まとめて選択してからコピーして、
Excel 上で貼り付けると、リンクが付いたままで一覧表示が可能です。
このリンク付きのセルから URL を抽出するには、セルを右クリックでメニューから「ハイパーリンクの編集...」を選択して、
開いた画面でアドレス(URL)が選択された状態なので、そのままコピーすることができます。
「ハイパーリンクの編集」のショートカットキーは「Ctrl + K」なので
- リンク付きのセルを選択
- 「Ctrl + K」で「ハイパーリンクの編集」画面を開く
- 「Ctrl + C」で選択された URL をコピー
- 「Esc」キーで「ハイパーリンクの編集」画面を閉じる
- 右矢印キーを押し、「Ctrl + P」で右隣のセルに貼り付け
というキー操作が効率的でしょう。特に「Ctrl + K」と「Ctrl + C」は 「Ctrl」キーを押しながら「K」「C」と連続して押せばいいわけです。
少ない数なら、この操作で充分に便利ですが、数が多くなると手間になってきます。
そこで「リンク付きセルから URL を抽出できる関数」があればいいのですが、私の知る限りではありません。
逆に「セルに挿入する文字列にリンクを付けられる関数(HYPERLINK関数)」はありますが、URL の抽出には使えません。
そんな中、Excel の「マクロ」機能を使って実現する方法ならあります。
記事通りに「標準モジュール」として「GetURL」という関数を作成して
リンク付きセルの右隣りに挿入して
問題なく URL を右のセルに出力でき、それを下までドラッグすることで一括で抽出して出力できました。
「マクロ」の使用に抵抗がなければ先述の記事をご参照ください。
◆◇◆
さらに今回は「マクロ」とは別に Microsoft365 の Excel で利用できる自動化機能「Officeスクリプト」を使う方法を紹介しておきます。
手順は
- リボンを「自動化」タブに切り替え
- 「新しいスクリプト」ボタンで「コードエディターで作成」を選択
- 画面左のサイドバーに表示される「コードエディター」で「名前の変更」をたとえば『リンクの URL抽出』にして保存
- コード入力ボックスに、以下のスクリプトをコピー&貼り付け
=== この下の行からスクリプトをコピー ===
function main(workbook: ExcelScript.Workbook) {
// リンクを含むセル範囲を選択
const range = workbook.getSelectedRange();
// 範囲内の各セルを反復処理
const values = range.getValues();
let outUrls: (string | boolean | number)[][] = [];
for (let i = 0; i < values.length; i++) {
const cell = range.getCell(i, 0); // 各行のセルを取得
const hyperlink = cell.getHyperlink();
if (hyperlink) {
// リンクが存在する場合、URLを抽出して配列に追加
outUrls.push([hyperlink.address]);
} else {
// リンクがない場合、空の文字列を追加
outUrls.push([""]);
}
}
// 抽出したURLを選択したセル範囲の右隣の列に書き出す
const nextCell = range.getOffsetRange(0, 1).getCell(0, 0) ;
nextCell.getResizedRange(outUrls.length - 1, 0).setValues(outUrls);
}
== この上の行までスクリプトをコピー ===
- Excel で URL を抽出するリンクがあるセルを選択
※ 縦方向なら複数セルの範囲選択にも対応しています。 - 「リンクの URL抽出」スクリプトの「実行」ボタンをクリック
これで選択セルの右隣のセルに抽出した URL が書き出されます。
保存した「リンクの URL抽出」スクリプトは何度でも利用が可能です。
理解を深めるための「パソコン用語解説」
記事の情報は公開時あるいは更新時のもので、最新情報はリンク先など情報元の公式ページでご確認ください。