Bir hücredeki köprünün bağlantı konumunu çıkarmak için bir excel formülü kullanabilir miyim?


46

Köprü konumundan farklı görünen metin içeren ekran metni içeren çok sayıda hücreli bir elektronik tablom var.

yani:

hücre yeri: A1

metni görüntüle = "Site Bilgisi"

köprü konumu = " http://www.mylocation.com "

Köprü konumunun metin dizesine erişmeme izin veren bir excel formülü var mı?

İdeal olarak şöyle görünür:

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


1
Gerçek köprüler (Ekle >> Köprü) veya =HYPERLINK()?

Formül olmak zorunda mı? Çok fazla VBA çözümü var.
— CharlieRB

Yanıtlar:


53

Bir makro kullanabilirsiniz:

  • Yeni bir çalışma kitabı aç.
  • VBA’ya girin (Alt + F11 tuşlarına basın)
  • Yeni bir modül yerleştirin (Ekle> Modül)
  • Aşağıdaki Excel kullanıcı tanımlı işlevini Kopyala ve Yapıştır
  • VBA'dan çık (Alt + Q tuşlarına basın)
  • Bu özel Excel işlevi için bu sözdizimini kullanın: = 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
    

4
@Ilk Neden cell.range ("A1") "range (" a1 ") kullanıyorsunuz. Köprüler. Miktar ve cell.range (" A1 ") Köprüler (1) .Adres? çıkardı (-> cell.hyperlinks.count ve cell.hyperlinks (1) .adress) ve mükemmel çalışıyor. Burada "range (" a1 ") 'in amacını merak ediyorum.
— PO

Bu, köprünün içinde birden fazla bağlantı olup olmadığını tedavi etmeyi varsayalım. Bu sadece bir fikirdi, ayarlarınızda harika bir fikir oldu. :)
— Igor O

Köprünüz içinde #somethingsaklanan bir belge parçası (örn. ) SubAddressİçeriyorsa Address, birleştirmek gerekir "#", ve SubAddress.
— gilly3 0

Parametre cellbir aralık nesnesi olduğundan, birden fazla hücre içerebilir. Range("A1")olarak yeniden yazılabilir Cells(1). İşleve, yalnızca parametredeki ilk hücreyi göz önünde bulundurması talimatını verir cell.
— ChrisB

19

Adresi yalnızca tek bir hücrenin değerinden almam gerekiyordu, bu yüzden bu küçük işlevi kullanışlı buldum:

Bir "kaba kuvvet" makrosu yerine, işaret edildiği köprü için URL'yi çıkaran ve döndüren kullanıcı tanımlı bir işlev de oluşturabilirsiniz:

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

Bu durumda istediğiniz yere yerleştirebilirsiniz. Örneğin, A1'deki bir köprüden gelen URL'nin C25 hücresinde listelenmesini istiyorsanız, o zaman C25 hücresinde aşağıdaki formülü girersiniz:

= GetURL (A1)

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


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

}

Bunun dışında bırakılan alıntı işaretleri, elektronik çizelgede = EXTRACT_URL (ADDRESS (satır (A4), 1,4)) kullanarak hücre referansından geçer. Aksi takdirde, aralık referansını kodlamanız gerekir. Sonra bu işlevi bir hücreden diğerine kopyalayabilirsiniz.
— Walker Rowe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.