2013-05-08 23:44:33 +0000 2013-05-08 23:44:33 +0000
49
49

セル内のハイパーリンクのリンク先をエクセルの式で抽出することはできますか?

ハイパーリンクを含むセルが多数あるスプレッドシートで、表示テキストがハイパーリンクの位置

とは異なるものを使用しています。A1_

display text = “Site Info”

hyperlink location = http://www.mylocation.com

ハイパーリンクの位置のテキスト文字列にアクセスできるエクセル式はありますか?

理想的には以下のようになります。

FORMULA(A1) = http://www.mylocation.com

回答 (3)

55
55
55
2013-05-09 00:20:34 +0000

マクロを使うことができます。

  • 新しいワークブックを開きます。
  • VBAに入る(Alt+F11を押す)
  • 新しいモジュールを挿入する(Insert > Module)
  • 下のExcelユーザ定義関数をコピーして貼り付ける
  • VBAから出る(Alt+Qを押す)
  • このカスタムExcel関数にこの構文を使用する: =GetURL(cell,[default_value])
22
22
22
2015-05-01 09:34:26 +0000
Function GetURL(rng As Range) As String
     On Error Resume Next
     GetURL = rng.Hyperlinks(1).Address 
End Function

「ブルートフォース」マクロの代わりに、ユーザー定義の関数を作成して、その関数が指すハイパーリンクの URL を抽出して返すこともできます。例えば、A1 のハイパーリンクからの URL をセル C25 に表示したい場合、セル C25 には以下の式を入力します。

=GetURL(A1) http://excel.tips.net/T003281ExtractingURLs_from_Hyperlinks.html

2
2
2
2017-01-30 09:54:57 +0000
function EXTRACT_URL(input) {

  var range = SpreadsheetApp.getActiveSheet().getRange(input);
  var re = /^.+?\(\"(.+?)\",.+?$/;
  if (input.indexOf(':') != -1) {
    var formulas = range.getFormulas();
    for (var i in formulas) {
      for (var j in formulas[i]) {
        formulas[i][j] = formulas[i][j].replace(re, "$1");
      }
    }
    return formulas;
  } else {
    return range.getFormula().replace(re, "$1");
  }

}