web-dev-qa-db-ja.com

Excelの数式を使用してセル内のハイパーリンクのリンク位置を抽出できますか?

ハイパーリンクの場所とは異なる表示テキストのハイパーリンクを含む多数のセルを含むスプレッドシートがあります。

すなわち:

セルの位置:A1

display text = "サイト情報"

ハイパーリンクの場所= " http://www.mylocation.com "

ハイパーリンクの場所のテキスト文字列にアクセスするためのExcelの数式はありますか。

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

式(A1)= " http://www.mylocation.com "

39
Gigamosh57

あなたはマクロを使うことができます:

  • 新しいブックを開きます。
  • VBAに入る(Alt + F11を押す)
  • 新しいモジュールを挿入する(挿入>モジュール)
  • 下記のExcelユーザー定義関数をコピーして貼り付けます
  • VBAから抜け出す(Alt + Qを押す)
  • このカスタムExcel関数には次の構文を使用します。= GetURL(cell、[default_value])

     Function GetURL(cell As range, Optional default_value As Variant)
     'Lists the Hyperlink Address for a Given Cell
     'If cell does not contain a hyperlink, return default_value
          If (cell.range("A1").Hyperlinks.Count <> 1) Then
              GetURL = default_value
          Else
              GetURL = cell.range("A1").Hyperlinks(1).Address
          End If
    End Function
    
50
Igor O

1つのセルの値からアドレスを抽出するだけなので、この小さな関数は便利です。

"総当たり"マクロの代わりに、それが指し示されているハイパーリンクのURLを抽出して返すユーザー定義関数を作成することもできます。

Function GetURL(rng As Range) As String
     On Error Resume Next
     GetURL = rng.Hyperlinks(1).Address 
End Function

この場合は、好きな場所に配置できます。たとえば、A1のハイパーリンクのURLをセルC25に表示する場合、セルC25に次の数式を入力します。

= GetURL(A1)

http://Excel.tips.net/T003281_Extracting_URLs_from_Hyperlinks.html

14
Matthew Lock
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");
  }

}