Tôi có thể sử dụng công thức excel để trích xuất vị trí liên kết của một siêu liên kết trong một ô không?


46

Tôi có một bảng tính với số lượng lớn các ô chứa siêu liên kết với văn bản hiển thị khác với vị trí siêu liên kết

I E:

vị trí ô: A1

hiển thị văn bản = "Thông tin trang web"

vị trí siêu liên kết = " http://www.mylocation.com "

Có một công thức excel cho phép tôi truy cập chuỗi văn bản của vị trí siêu liên kết không?

Lý tưởng nhất là nó sẽ như thế này:

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


1
Siêu liên kết thực tế (Chèn >> Siêu liên kết) hoặc siêu liên kết sử dụng =HYPERLINK()?

Nó có phải là một công thức? Có rất nhiều giải pháp VBA.
CharlieRB

Câu trả lời:


53

Bạn có thể sử dụng một macro:

  • Mở ra một bảng tính mới.
  • Nhận được vào VBA (Nhấn Alt + F11)
  • Chèn một mô-đun mới (Chèn> Mô-đun)
  • Sao chép và Dán chức năng do người dùng Excel xác định bên dưới
  • Thoát khỏi VBA (Nhấn Alt + Q)
  • Sử dụng cú pháp này cho hàm Excel tùy chỉnh này: = GetURL (ô, [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
@igor Tại sao bạn sử dụng "phạm vi (" a1 ") trong cell.range (" A1 "). Hyperlinks.Count và cell.range (" A1 "). Hyperlinks (1) .Địa chỉ? Tôi đã sao chép macro của bạn nhưng lấy nó ra (-> cell.hyperlinks.count và cell.hyperlinks (1) .adress) và nó hoạt động hoàn hảo. Tôi tò mò về mục đích của "phạm vi (" a1 ") ở đây.
PO

Điều này giả sử để điều trị nếu có nhiều liên kết bên trong siêu liên kết. nó chỉ là một ý tưởng, thật tuyệt khi nó làm việc với sự điều chỉnh của bạn. :)
Igor O

Nếu siêu liên kết của bạn bao gồm một đoạn văn bản (ví dụ #something), được lưu trữ trong SubAddress, vì vậy bạn sẽ cần phải tiếp nhau Address, "#"SubAddress.
gilly3

Vì tham số celllà một đối tượng phạm vi, nó có thể chứa nhiều hơn một ô. Range("A1")có thể được viết lại như Cells(1). Nó chỉ thị hàm chỉ xem xét ô đầu tiên trong tham số cell.
ChrisB

19

Tôi chỉ cần trích xuất địa chỉ từ một giá trị của một ô vì vậy tôi thấy hàm nhỏ này tiện dụng:

Thay vì macro "brute force", bạn cũng có thể tạo một hàm do người dùng xác định sẽ trích xuất và trả lại URL cho bất kỳ siêu liên kết nào mà nó được trỏ:

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

Trong trường hợp này bạn có thể đặt nó ở nơi bạn muốn. Ví dụ: nếu bạn muốn URL từ một siêu liên kết trong A1 được liệt kê trong ô C25, thì trong ô C25, bạn sẽ nhập công thức sau:

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

}

Mặt khác, bỏ dấu ngoặc kép trong tham chiếu ô bằng cách sử dụng dấu này trong bảng tính = EXTRACT_URL (ĐỊA CHỈ (hàng (A4), 1,4)). Nếu không, bạn phải mã hóa tham chiếu phạm vi. Sau đó, bạn có thể sao chép chức năng này từ ô này sang ô khác.
Walker Rowe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.