3

数百のタイトルのリストがあり、エントリごとにいくつかの列 (名前、日付など) があります。名前の中には、「A」、「B」、「C」などのエントリを追加しました。ドキュメントをスクロールして特定の名前を探すときに、「H」などの場所を簡単に確認できるようにするためです。開始します。

リストが大きくなるにつれて、ドキュメントの上部にハイパーリンクを追加して、A/B/C などのエントリにジャンプできるようにしました。ただし、新しいデータを追加して並べ替える場合、またはリストを日付などで並べ替える場合、ハイパーリンク「Go to: A」(例として) は、そのセルのデータにもかかわらず、元のセル (A1) にリンクし続けます。 (実際のテキスト "A") は A42 になりました。

並べ替えと[主に]新しいデータの追加を通じて、ハイパーリンクを維持する方法はありますか?

4

3 に答える 3

2
  • Excel スプレッドシートを「Web ページ」として保存します (「単一ファイル Web ページ」ではありません)。
  • Excel で「Web ページ」バージョンを開きます。
  • 並べ替えます。
  • Excel スプレッドシートとして保存します。

各リンクは適切なセルに保持されます。

于 2015-02-25T21:20:01.867 に答える
1

Excel には、ハイパーリンクと並べ替えに関連する既知のバグがあります。

KB214328: Excel でこれらのハイパーリンクを含むセルを並べ替えると、ハイパーリンクが削除されるか無効になる

私の場合、Excel (ProjecWise) 以外のドキュメントへのハイパーリンクを作成していることに注意してください。

私の回避策は、すべてのハイパーリンクをテキストとして 1 つの列に保存し、Excel の Hyperlink() 関数を使用して、別の列の各行のハイパーリンクを生成することです。外部ソース (ブラウザーなど) からハイパーリンクを貼り付ける場合は、セルに直接貼り付けるのではなく、セルを選択し、リンクをリボンの下の機能ボックスに貼り付けます。これにより、テキストが表示され、セルにハイパーリンク オブジェクトは作成されません。

私は問題を完全には理解していませんが、Excel がハイパーリンクを処理する方法を新たに理解した結果、セル内のハイパーリンクは何らかの形でシート オブジェクト上のハイパーリンクのコレクションにリンクされています。シートの行を並べ替えると、シートのハイパーリンク参照が不適切な参照を返し始めます。シートのハイパーリンク参照への一意の「ハンドル」を見つけることができませんでしたが、ソートすると h.Parent.Top が変化していることに気付きました。

Public Sub ShowSheetHyperlinks()
' Use this to demonstrate the issue acknowledged here:  http://support.microsoft.com/kb/214328
' Add some hyperlinks in a column of a spreadsheet and random values in a column next to it.
' Run this routine.  Then sort the values by the first or second column and run this routine again.
' You may have to do this a few times, and/or copy and paste your hyperlink cells to other cells.
' Eventually you will see that the results change after the two columns are sorted.
' (You may not need two columns, but it may help to randomize the sorting.)

    Dim h As Hyperlink

    Debug.Print "Hyperlinks on " & ActiveSheet.Name & ": " & ActiveSheet.Hyperlinks.Count

    For Each h In ActiveSheet.Hyperlinks
        ' After you sort the list of hyperlinks, you will notice the values in the
        ' three columns below.  I am truncating the address to just see the last 20 characters.
        Debug.Print h.TextToDisplay, h.Parent.Top, Right(h.Address, 20)
    Next

End Sub
于 2014-02-21T22:12:20.890 に答える
1

A1 の式は=HYPERLINK($I1,"Go to: "&H1)、必要に応じてコピーする必要があります。

SO17535313 の例を改訂

(=MATCH は、文字を検索するのと同じ範囲内のハイパーリンクされたセルを「好きではありません」。)

または、Row1 (ただし、新しい ColumnA 内) で、ColumnH:I を必要とせずに下にコピーします。

=HYPERLINK("[SO17535313.xlsx]Sheet1!"&"B"&MATCH(CHAR(64+ROW()),B:B,0),"Go to: "&CHAR(64+ROW()))
于 2013-07-08T23:49:22.457 に答える