列Aに名前が表示されているスプレッドシートがあります。数百の名前があり、それぞれに異なるハイパーリンク(その人のWebページにリンクする)があります。これらのハイパーリンクを、テキストが異なり、ハイパーリンクがない別の列に転送したいと思います。
列Aのすべてのセルにハイパーリンクがあるわけではありません。一緒にマージされたセルのグループがあるため、A2:A7には1つのリンクがあり、A8:A13は次のリンク、A9:10は次のリンクがあります(つまり、マージされるセルの数は均一ではありません)。
例えばA2:A7が「Bob」と表示されてwww.bob.comにリンクしている場合、「Smith」と表示されて何にもリンクされていないI2:I7がwww.bob.comにリンクするようにします。リンクをA2:A579からI2:I579にコピーして、これを繰り返し実行したいと思います。
情報はWebページ内のテーブルからコピーされ、そこからハイパーリンクが取得されます。
このマクロは役に立ちます
Sub SwapIt()
For i = 2 To 579
If Range("A" & i).Value <> "" And Range("I" & i).Value <> "" Then
Dim newLink As String ' the new link string needs a place to live... just like me!
If Range("A" & i).Hyperlinks.Count = 1 Then
newLink = Range("A" & i).Hyperlinks(1).Address ' Get the old horrible link :)
Range("I" & i).Hyperlinks.Add anchor:=Range("I" & i), Address:=Range("I" & i) ' horrible hack, just to get it to a link
Range("I" & i).Hyperlinks(1).Address = newLink '' replace with the new link... Much better. Like a ray of sunshine
End If
End If
Next i
End Sub
これにより、ハイパーリンクがA2からI2に移動し、次にA3からI3に移動します。