Excel 수식을 사용하여 셀에서 하이퍼 링크의 링크 위치를 추출 할 수 있습니까?


45

하이퍼 링크 위치와 다른 표시 텍스트를 가진 하이퍼 링크를 포함하는 셀이 많은 스프레드 시트가 있습니다.

즉 :

셀 위치 : A1

표시 텍스트 = "사이트 정보"

하이퍼 링크 위치 = " http://www.mylocation.com "

하이퍼 링크 위치의 텍스트 문자열에 액세스 할 수있는 Excel 공식이 있습니까?

이상적으로는 다음과 같습니다.

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


1
실제 하이퍼 링크 (삽입 >> 하이퍼 링크) 또는 =HYPERLINK()?

공식이어야합니까? 많은 VBA 솔루션이 있습니다.
CharlieRB

답변:


53

매크로를 사용할 수 있습니다 :

  • 새 통합 문서를 엽니 다.
  • 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
    

4
@igor 왜 cell.range ( "A1"). Hyperlinks.Count 및 cell.range ( "A1"). Hyperlinks (1) .Address에서 "range ("a1 ")를 사용하고 있습니까? 매크로를 복사했지만 그것을 꺼내고 (-> cell.hyperlinks.count와 cell.hyperlinks (1) .adress) 그리고 완벽하게 작동합니다. 여기서 "range ("a1 ")의 목적이 궁금합니다.
PO

하이퍼 링크 내부에 여러 개의 링크가있는 경우이를 처리한다고 가정합니다. 그것은 단지 아이디어 일뿐입니다. :)
Igor O

하이퍼 링크가 문서 조각 (예를 들어,이 포함되어있는 경우 #something에 기억됩니다) SubAddress, 그래서 당신은 연결하는 필요 Address, "#"SubAddress.
gilly3

매개 변수 cell는 범위 오브젝트이므로 둘 이상의 셀을 포함 할 수 있습니다. Range("A1")로 다시 작성할 수 있습니다 Cells(1). 매개 변수의 첫 번째 셀만 고려하도록 함수에 지시합니다 cell.
ChrisB 2016 년

19

단일 셀의 값에서 주소를 추출하기 만하면이 작은 함수가 유용하다는 것을 알았습니다.

"강제력"매크로 대신, 사용자가 지정한 하이퍼 링크의 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


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

}

다른 인용 부호를 생략하면 스프레드 시트 = EXTRACT_URL (ADDRESS (row (A4), 1,4))에서 이것을 사용하여 셀 참조에 전달합니다. 그렇지 않으면 범위 참조를 하드 코딩해야합니다. 그런 다음이 함수를 한 셀에서 다른 셀로 복사 할 수 있습니다.
워커 로우
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.