PeaPort
エクセルシートのセルにハイパーリンクが2つある場合の処置について
1.概要と対処法
 次のような処理をした場合に、ひとつのセルに2つのハイパーリンクが設定されることがあります。
ひとつのセルにハイパーリンクを設定した後、隣のセルと結合し、更に、既存のハイパーリンクを削除せずにハイパーリンクの編集で新たなハイパーリンクを設定した場合(2.2参照)
ハイパーリンクの設定されているセルから複数の連続したセルへコピー&貼り付け(以下、コピペ)し、その貼り付けられたセルのうちのひとつを切り取り、更にそこへ、別のハイパーリンクが設定されているセルを切り取ったものを貼り付け(以下、カット&ペースト)した場合(2.3参照)
ハイパーリンクの設定されているセルを複数の連続したセルへコピペしたものを含む範囲に対して、並べ替えを行った場合(2.4参照)
 このような場合、「エクセルからHTMLへ」のバージョンV2.13以前のものは、表に見えているリンク先(マウスのカーソルを合わせたときに表示されるアドレス)と異なったアドレスを変換していました。V2.14では、見えているものと同じアドレスを変換する様に改善し、更に該当するセルの行と列の番号を示して注意を促すメッセージを出すこととしました。
 ベースとなるエクセル文書は、更新の途中で隠れているハイパーリンクと置き換わってしまうおそれがありますので、隠れたハイパーリンクを取り除いておいた方が安全です。
 フォントの崩れることは我慢して、確実にハイパーリンクの削除を行って後、ハイパーリンクの再設定をし、フォントも再設定するのが確実です。しかし、量が多くて大変な場合は下記の方法を試してみて下さい。 うまく行く場合があります。
[セルに表示されている文字列のフォントを維持したまま隠れたハイパーリンクを取り除く方法]
EXCEL2003、EXCEL2007の場合
 該当するセル(結合されている場合は結合を解いた先頭セル)を、いったん別の空白セルへコピペします。
次に、当該セルをDeleteキーで消去してから、貼り付けておいたものをコピペで戻します。結合セルであったものは再度セル結合し、貼り付けされた空白セルはDeleteしてもとの空白セルに戻せば完了です。
 なお、最初の当該セルから空白セルへ写すときに、カット&ペーストしないで下さい。そうしすると逆に、残したいハイパーリンクが消えて、消したい方がコピーされる場合があります。
EXCEL2010以降の場合
 下記の2.2(5)及び(6)に示すとおり、EXCEL2010以降はコピーペしてもカット&ペーストしても隠れている方のハイパーリンクと入れ替わってしまい、上記の方法ではうまく行かない場合が多くあります。
 よって、その場合には、2.2(7)のようにいったん当該セルのハイパーリンクの削除をして(注意.2.2(8)のリンクの解除ではありません)から元に戻すボタンで戻し、その後に上記の手順を試します。
2. ひとつのセルにハイパーリンクが2つ設定される事例
2.1 取り扱う内容と、その表記について
 2つのハイパーリンク先、Link1.htm と Link2.htm を何もない空白セルに設定したものを対象とします。
 説明のため、括弧外はセルに表示される文字列、括弧内はリンク先のアドレスを示すものとします。
 赤色文字列で示されるアドレスは、隠れているアドレスであることを示すものとします。
 黒色細線の罫線で囲まれて着色されているものはセルを表します。
n) ←これはセルを表し、左の片括弧の数値は行番号を示します。
2.2 結合セルの場合
 以下の、(1)~(6)は処理する順番を示しています。
 (1) ひとつの空白セルにリンク先 Link1.htm を設定
 1) Link1.htm(Link1.htm)
 (2) 隣のセルと結合
1) Link1.htm(Link1.htm)
 (3) ハイパーリンクの編集で、「リンクの解除」をしないで、新たなリンク先 Link2.htm を設定
1) Link2.htm(Link1.htm)(Link2.htm)
 2つのリンク先が内蔵され、表に見えるのは(Link2.htm)の方です。これで再現できました。
 (4) 確認のために、この結合セルの結合を解除、この後(5)~(9)のいずれかへ進んで確認
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm)
 右のセルは、文字列の表示はありませんが、リンク先のアドレスは残ります。
 (5) 先頭セルを別の空白セルへカット&ペーストして確認
1) (Link2.htm) (Link2.htm)
2) Link2.htm(Link1.htm) ←上の1)行の先頭セルを「切り取り」して「貼り付け」したセル
 下段の貼り付けられたセルにマウスカーソルを合わせると、表示されるリンクアドレスと文字列表示が異なってしまうことが確認できます。
 切り取られた方のセルにはアドレスが残っています。
 「切り取り」では、隠れているアドレスが持ち出されているようです。
 (6) 先頭セルを別の空白セルへ、切り取りではなく、コピペして確認
EXCEL2003、EXCEL2007の場合
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm)
3) Link2.htm(Link2.htm) ←上の1)行の先頭セルを「コピー」して「貼り付け」したセル
 下段の貼り付けられたセルは(5)とは異なり、表示とリンクアドレスの同じものが写されます。
 「コピー」の場合は、表から見えるアドレスが持ち出されているようです。
EXCEL2010、EXCEL2013の場合
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm)
3) Link2.htm(Link1.htm) ←上の1)行の先頭セルを「コピー」して「貼り付け」したセル
 下段の貼り付けられたセルは(5)と同様に、表示とリンクアドレスの異なったものが写されます。
EXCEL2010、EXCEL2013の場合は「切り取り」と同様に隠れているアドレスが持ち出されているようです。
 (7) 先頭セルにおいて、右クリックで「ハイパーリンクの削除」をして確認
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm) ←(4)の状態
          ↓ 先頭セルにおいて、右クリックで「ハイパーリンクの削除」をする
1) Link2.htm ←右セルにも影響
          ↓ 「元に戻す」をする
1) Link2.htm(Link2.htm)(Link1.htm) (Link2.htm)
 何故かしら、表にあるアドレスと隠れているアドレスが交替し、元に戻りません。
 (8) 先頭セルにおいて、「ハイパーリンクの編集」ダイアログで「リンクの解除」をして確認
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm) ←(4)の状態
          ↓ 「ハイパーリンクの編集」ダイアログで「リンクの解除」をする
1) Link2.htm(Link1.htm) ←右セルにも影響
          ↓ 「元に戻す」をする
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm)
 リンクの解除後に隠れているアドレスが表へ出ますが、「元に戻す」をすると元へ戻ります。
 (9) 右側の結合解除されたセルをDeleteして確認
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm) ←(4)の状態
          ↓ 右側のセルをDeleteキーで消去する
1) Link2.htm(Link1.htm)
 何故かしら、変更前の隠れていたリンクアドレスが表へ出ます。
 (10) 先頭セルにおいて、Deleteキーで消去した後「元へ戻す」をして確認
1) Link2.htm(Link1.htm)(Link2.htm) (Link2.htm) ←(4)の状態
          ↓ Deleteキーで消去する。
1) ←右セルにも影響
          ↓ 「元に戻す」をする
1) Link2.htm(Link2.htm)(Link1.htm) (Link2.htm)
 何故かしら、表にあるアドレスと隠れているアドレスが交替しています。
2.3 複数のセルへコピペした後、カット&ペーストをした場合
 (1) リンク先 Link1.htm と Link2.htm を設定したセルを用意
1) Link1.htm(Link1.htm)
2) Link2.htm(Link2.htm)
 (2) リンク先を持つひとつのセルから複数のセルへコピペ
1) Link1.htm(Link1.htm) ←コピー元のセル
2) Link2.htm(Link2.htm)
3) Link1.htm(Link1.htm) 同時に貼り付けられたセル
4) Link1.htm(Link1.htm)
 (3) 貼り付けられたセルの内のひとつをカット&ペースト
1) Link1.htm(Link1.htm)
2) Link2.htm(Link2.htm)
3) Link1.htm(Link1.htm) ←同時に貼り付けられたままのセル
4) (Link1.htm) ←同時に貼り付けられた後切り取られたセル(アドレスが残る)
5) Link1.htm(Link1.htm) ←上のセルを「貼り付け」(カット&ペース)トしたセル
 (4) 切り取られたセルへ別のセルをカット&ペースト
1) Link1.htm(Link1.htm)
2) ←新たに切り取られたセル
3) Link1.htm(Link1.htm)
4) Link2.htm(Link2.htm)(Link1.htm) ←上の「新たに切り取られたセル」を「貼り付け」したセル
5) Link1.htm(Link1.htm)
 4段目の新たにカット&ペースとされたセルは、2つのリンクアドレスを持ち、表から見えるアドレスは文字列表示とは異なったものとなっています(切り取って持ち出してきたアドレスは隠れています)。
2.4 複数のセルへコピペした後、並べ替えをした場合
 (1) 2つのリンク先を設定したセルを用意し、ひとつを連続した2つのセルへコピペ(2.3の(2)と同じ)
1) Link1.htm(Link1.htm) ←コピー元のセル
2) Link2.htm(Link2.htm)
3) Link1.htm(Link1.htm) 同時に貼り付けられたセル
4) Link1.htm(Link1.htm)
(2) 降順に並べ替え
1):旧4) Link1.htm ←リンクアドレスが消えています
2):旧3) Link1.htm ←リンクアドレスが消えています
3):旧2) Link2.htm(Link2.htm)(Link1.htm) ←文字列と表から見えるアドレスが異なる
4):旧1) Link1.htm(Link1.htm)(Link1.htm) ←文字列と表から見えるアドレスはたまたま同じとなった(?)
 3段目と4段目のセルに、おのおの2つのリンクアドレスが設定されます。
3. あとがき
 マイクロソフトはこのことを認識しており、ハイパーリンクの設定されたセルを複数のセルへコピペした後に、並べ替えをすると問題が生じることを下記のページにおいて解説しています。
https://support.microsoft.com/en-us/help/214328/hyperlinks-are-removed-or-invalid-after-you-sort-cells-that-contain-th
 いずれにしましても、ハイパーリンクの設定されたセルを取り扱う場合には次の点を守ることが推奨されます。
 ・結合セルのリンク先を変更するときは、ハイパーリンクの削除をしてから新たなリンク先を設定する。