2016-01-28 39 views
0

我有兩個工作表,我正在使用長序列號作爲單元格值。一張工作表(工作表1)具有超鏈接到涉及該項目的網頁的每個單獨序列號的列表。該列表範圍從A1:A31。VBA將單元格複製到其他單元格具有相同值的工作表中

第二片材(Sheet 2中)具有相同的那些序列號的大量的列表,但在範圍G1:G102。區別在於這個列表沒有超鏈接,並且序列號有時會出現多次。也有一些區域的單元格是空白的,所以它會分割連續的數據列。

我基本上想寫一個宏,它將Sheet1中的第一個列表和每個單元格的它與Sheet2列中的每個單元格進行比較。然後,如果值匹配,我想複製超鏈接來自工作表1的單元格並將其粘貼到Sheet 2中具有相同值的單元格中。因此,Sheet2列G現在擁有完整填充的超鏈接序列號列表。

任何人都可以幫助我嗎?這是我迄今爲止...似乎並沒有工作:

Sub CopyHyperlinks() 

Dim cell As Excel.Range 
Dim myRange As Excel.Range 
Dim newRange As Excel.Range 

Set myRange = Excel.ThisWorkbook.Sheets("Contents").Range("A1:A31") 
Set newRange = Excel.ThisWorkbook.Sheets("Sheet1").Range("G1:G102") 

For Each cell In myRange 
    If myRange.Cells.Value = newRange.Cells.Value Then newRange.Cells.Value = myRange.Cells.Value 
Next cell 

End Sub' 
+0

是網址相同,除了序列號的區別嗎? (我在問,因爲只有在公式情況下才能做到這一點)。更好的是,請張貼兩個數據集的屏幕截圖。這將有很大幫助。 –

+1

請檢查[HYPERLINK](https://support.office.com/en-US/article/HYPERLINK-function-333C7CE6-C5AE-4164-9C47-7DE9B76F577F)函數。它可能會做所有你正在尋找的 –

+0

你正在使用'For Each cell in myRange',但卻從未真正使用'Cell'。不要將'Cells'與你的'cell'變量混淆。試試'如果.cel.value =',但是你需要修改'newRange.Cells.Value',以包含'cell'。你只是想看看'myRange'是否有一個單元在整個'newRange'表單中? – BruceWayne

回答

0

請參閱this little function。把這個:

Function GetHyperLinkAddress(rng As Range) As String 
Dim hl As Hyperlink 
For Each hl In rng.Parent.Hyperlinks 
    If hl.Range.Address = rng.Address Then 
     GetHyperLinkAddress = hl.Address 
     Exit Function 
    End If 
Next hl 
GetHyperLinkAddress = "Not Found" 
End Function 

在一個模塊。在電子表格中,添加

=GetHyperLinkAddress(Cell#) 

在帶有超鏈接的單元格旁邊。那麼你可以使用一個vlookup來匹配。

相關問題