新增或取代超連結內的文本

新增或取代超連結內的文本

在嘗試探索如何做到這一點後,我感到非常困惑。它非常簡單,但尚未找到解決方案。

我想知道的是以下內容。我有三個獨立的文件,所有這些文件在某種程度上都相互關聯;資料從文件(1.主輸入)輸入並彙總到三個電子表格中。

每個文件的佈局都相同,唯一的可變因素是日期,對於主輸入,我們有數值。

以插圖的形式,它看起來像這樣:

A。 1 主輸入 -->(饋入)2,3 b. 2 --> (饋入)3 和 4 c. 3 --> (饋入)4

我想知道的是,在文件2,3和4中......數據每年都會變化。作為範例,我有許多電子表格的「超連結」:

2015年=“\每日收入\2015[收入 2015.xls]年度摘要'!$C$160”

2016年=“\每日收入\2016[收入 2016.xls]年度摘要'!$C$160”

2017年=“\每日收入\2017[收入 2017.xls]年度摘要'!$C$160”

從上面來看,我需要更改的唯一變數是年份,是否有任何程式碼/巨集等我可以用來替換在超連結內。考慮到文件路徑將總是保持不變。

我完全了解尋找和替換功能,但是我希望使這個用戶友好且簡單。

請幫幫我,謝謝!

答案1

首先,你一直在談論超連結。我認為你的意思是引用其他文件的公式。這些不是超連結。如果您真正的意思是超鏈接,這是解決方案:


回答您的實際問題:是的,有一個巨集。當然。我認為你需要了解的是對象Worksheet.Hyperlinks。您可以循環瀏覽每個工作表中的每個超鏈接,並將地址替換為您想要的任何內容。這是一個片段範例:

Sub ChangeHyperlinks()
    Dim ws As Worksheet
    Dim hyp As Hyperlink
    For Each hyp In ws.Hyperlinks
        hyp.Address = Replace(hyp.Address, "2015", "2016")
    Next
End Sub

如果你不想改變就必須修改它每一個透過新增條件語句(例如If InStr(1, hyp.Address, "\Daily Revenue\2015") Then.您可以使用該Workbook_Open事件在每次開啟檔案時運行,根據檔案名稱取得正確的年份,然後執行超連結的替換。是的,這會火每一個文件打開的時間,即使它已經正確。根據您擁有的超連結數量,這可能沒問題,也可能會讓一切陷入停頓。


如果您真正的意思是公式,這裡有一個程式碼片段。同樣,您必須使其更適合您的需求,但這應該可以幫助您入門。

Private Sub Workbook_Open()
    Dim i As Integer
    Dim srcArray As Variant
    srcArray = ThisWorkbook.LinkSources(xlLinkTypeExcelLinks)
    For i = 1 To UBound(srcArray)
        Debug.Print srcArray(i)
        ThisWorkbook.ChangeLink srcArray(i), Replace(srcArray(i), "2015", "2016")
    Next
End Sub

另外,如果您指的是公式,那麼您的問題是重複的堆疊溢位

答案2

你的問題有些含糊之處。此答案假設您正在討論其他工作簿中的單元格引用(如示例中所示),而不是超鏈接,並且任務是將引用設置為按年份調整,而不是每年重寫所有公式。

首先,您需要在某處提供年份參考。目前尚不清楚您希望年份何時或以何種方式更改(每年 1 月 1 日自動更改?您選擇的日期?您希望能夠隨時更改年份?)。所以我將基於通用解決方案。選擇一個儲存格來儲存年份參考。對於我的範例,我將使用Z1包含範例中儲存格引用的工作表的儲存格。如果您希望能夠隨意更改年份或在您選擇的日期更改年份,只需輸入Z1四位數年份即可。如果您希望年份在 1 月 1 日自動更改,請使用=YEAR(TODAY())

然後,不要將年份硬編碼到每個公式中,而是連接一個引用Z1並使用 INDIRECT 函數將文字字串轉換為儲存格引用。例如:

          '\Daily Revenue\2015[Revenue 2015.xls]Year Summary'!$C$160   becomes
INDIRECT("'\Daily Revenue\"&Z1&"[Revenue "&Z1&".xls]Year Summary'!$C$160")

對於現有工作表,您需要進行一次性變更才能修改儲存格參考。之後,您可以隨時透過更改條目來更改年份Z1

相關內容