Excel : 일치하는 하이퍼 링크 찾기


0

'성공하지 않고 그물을 찾는 시간을 보낸 후에 여기 내 질문이있다.

나는 두 개의 워크 북을 가지고 있는데, '프로파일'과 '결과'라고 부르 자.

'프로필'에는 A3부터 A2000까지의 하이퍼 링크가있는 시트가 있습니다. 'Jim', 'Dave', 'Anne'등과 같은 이름이이 셀에 나타납니다. 기본 하이퍼 링크는 'www.destinationwebsite.com/nameID'와 같은 특정 이름의 ID로만 다릅니다. nameID는 모든 경우마다 다릅니다.

'결과'에는 시트가 있고이 이름 / 하이퍼 링크 중 하나의 인스턴스가 C3 ~ Cx의 어느 곳에 나 나타날 수 있습니다.

지금은 두 통합 문서의 이름을 비교하는 중입니다. 프로필의 이름이 '결과'에 있는지 알려줍니다. 그러나 두 개 이상의 'Jim 's in'results '(서로 다른 ID를 가짐)가 있으면 작동하지 않습니다. 이것의 유일한 방법은 실제로 일치하는 하이퍼 링크 ( 'nameID')를 확인하여 올바른 'Jim'을 참조하고 있는지 확인하는 것입니다.

이것에 약간의 시간을 보낸 후에 나는 패배를 인정해야만했습니다. 확실히 기본적인 것을하고 있기 때문에 엑셀에서 쉽게 할 수 있어야합니다.

어떤 도움이라도이 걸림돌을 지나쳐 감탄할 것입니다.


결과 시트의 형식은 동일합니다. 하이퍼 링크가 붙은 이름입니까? 그리고 누락 된 물건을 확인하고 싶습니까? 중복을 제거 하시겠습니까? 하이퍼 링크는 어떻게 만들어 졌습니까? 당신은 간단한 공식으로 이것을 할 수 없을 것입니다, 나는 생각하지 않습니다.
Raystafarian

네, 같은 형식입니다. 프로필 워크 시트에는 A3에서 A2000까지의 셀에 약 2,000 명의 이름이 있습니다. 이 셀들 각각은 하이퍼 링크이며 각 URL은 'nameID'로 인해 달라집니다. 이러한 셀은 절대로 변경되지 않고 새로운 셀을 추가해야하는 경우 새 셀이 삽입 될 수 있습니다. 내가 뭘 찾고있는 A3의 하이퍼 링크에 대한 일치에 대한 다른 통합 문서의 결과 워크 시트를 확인 셀 B3 수식을 넣습니다. 일치하는 것이 있으면 true를 반환하고 일치하지 않으면 false를 반환합니다.
Znook

이것은 VBA가 필요합니다 - 하이퍼 링크 주소로 작업하는 것은 VBA에서 충분히 어렵습니다. 하이퍼 링크를 만드는 것 이외의 공식으로 할 수 있는지도 모르겠습니다.
Raystafarian

답변:


0

이것은 효과가있다.

Sub CheckLinks()
Dim WBprofiles As Workbook
Set WBprofiles = ThisWorkbook
Dim WBresults As Workbook
Set WBresults = Workbooks.Open("C:\Users\path\to\results.xlsx")

Dim WSprofiles As Worksheet
Set WSprofiles = WBprofiles.Sheets("profiles")
Dim WSresults As Worksheet
Set WSresults = WBresults.Sheets("results")

Dim DictResults As Object
Set DictResults = CreateObject("Scripting.Dictionary")

Dim lastrow As Integer
lastrow = WSresults.Cells(Rows.Count, "A").End(xlUp).Row

Dim strKey As String
For d = 1 To lastrow
    strKey = Cells(d, 1).Hyperlinks(1).Address
    DictResults(strKey) = 1
Next

Dim vResult() As Variant
ReDim vResult(DictResults.Count - 1, 1)
Dim x As Integer

For Each Key In DictResults.keys
    vResult(x, 0) = Key
    x = x + 1
Next

lastrow = WSprofiles.Cells(Rows.Count, "A").End(xlUp).Row
Dim strLoc As String
Dim i As Integer
For Each link In WSprofiles.Range("A1:A" & lastrow).Hyperlinks
    strLoc = link.Address
    For i = LBound(vResult) To UBound(vResult)
        If vResult(i, 0) = strLoc Then
            link.Range.Offset(, 1) = "Found"
        End If
    Next
Next

End Sub

Raystafarian에게 시간을내어 주신 데 대해 감사 드리며, 내일 시도하고 어떻게되는지보십시오.
Znook

중복을 피하기 위해 사전을 사용합니다. 중복이 없으면 사전은 필요 없습니다. 내가 왜 중복 된 줄 알았는지 모르겠다.
Raystafarian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.