Bisakah saya menggunakan rumus excel untuk mengekstrak lokasi tautan hyperlink dalam sel?

46

Saya memiliki spreadsheet dengan sejumlah besar sel yang berisi hyperlink dengan teks tampilan berbeda dari lokasi hyperlink

yaitu:

lokasi sel: A1

display text = "Info Situs"

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

Apakah ada rumus excel yang memungkinkan saya untuk mengakses string teks dari lokasi hyperlink?

Idealnya akan terlihat seperti ini:

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


sumber
1
Hyperlink aktual (Sisipkan >> Hyperlink) atau hyperlink menggunakan =HYPERLINK()?
Apakah itu harus menjadi formula? Ada banyak solusi VBA.
CharlieRB

Jawaban:

53

Anda dapat menggunakan makro:

  • Buka buku kerja baru.
  • Masuk ke VBA (Tekan Alt + F11)
  • Sisipkan modul baru (Sisipkan> Modul)
  • Salin dan Tempel fungsi yang ditentukan pengguna Excel di bawah ini
  • Keluar dari VBA (Tekan Alt + Q)
  • Gunakan sintaks ini untuk fungsi Excel khusus ini: = GetURL (sel, [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
    
Igor O
sumber
4
@igor Mengapa Anda menggunakan "range (" a1 ") di cell.range (" A1 "). Hyperlinks.Count dan cell.range (" A1 "). Hyperlinks (1) .Address? Saya sudah menyalin makro Anda tetapi mengambilnya (-> cell.hyperlinks.count dan cell.hyperlinks (1) .adress) dan itu bekerja dengan sempurna. Saya ingin tahu tentang tujuan "range (" a1 ") di sini.
PO
Ini seharusnya memperlakukan jika ada beberapa tautan di dalam hyperlink. itu hanya sebuah ide, hebatnya bekerja dengan penyesuaian Anda. :)
Igor O
Jika hyperlink Anda termasuk fragmen dokumen (misalnya, #something), yang disimpan dalam SubAddress, sehingga Anda akan perlu untuk concatenate Address, "#", dan SubAddress.
gilly3
Karena parameter celladalah objek jangkauan, ia dapat berisi lebih dari satu sel. Range("A1")dapat ditulis ulang sebagai Cells(1). Ini menginstruksikan fungsi untuk hanya mempertimbangkan sel pertama dalam parameter cell.
ChrisB
19

Saya hanya perlu mengekstrak alamat dari nilai sel tunggal sehingga saya menemukan fungsi kecil ini berguna:

Alih-alih makro "brute force", Anda juga bisa membuat fungsi yang ditentukan pengguna yang akan mengekstrak dan mengembalikan URL untuk hyperlink apa pun yang ditunjuk:

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

Dalam hal ini Anda dapat menempatkannya di tempat yang Anda inginkan. Jika Anda ingin, misalnya, URL dari hyperlink di A1 dicantumkan di sel C25, maka di sel C25 Anda akan memasukkan rumus berikut:

= GetURL (A1)

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

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

}
Isaac Tanner-Dempsey
sumber
Di lain yang meninggalkan tanda kutip lulus dalam referensi sel dengan menggunakan ini di spreadsheet = EXTRACT_URL (ADDRESS (baris (A4), 1,4)). Kalau tidak, Anda harus hardcode referensi rentang. Kemudian Anda dapat menyalin fungsi ini dari satu sel ke sel lainnya.
Walker Rowe