web-dev-qa-db-ja.com

ハイパーリンクのみ(テキストではない)を別のセルにコピーするにはどうすればよいですか?

列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ページ内のテーブルからコピーされ、そこからハイパーリンクが取得されます。

2
OfficeLackey

このマクロは役に立ちます

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に移動します。

1
Dave