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.