我Google一下,好像沒人分享做法?
我研究了一下Exel公式
終於弄出我想要的動態超連結
這個只限於Excel裡面使用
若是動態檔案超連結,這個我沒有研究(就是檔案換了任何位置,Excel都能正常點擊)
若是工作表之間的儲存格動態超連結,公式是寫出來了,只是大家想法會跟我一樣嗎?
我先貼圖,再貼公式
1.首先 工作表1 有兩個欄位是 資料 紀錄超連結目標位置
2.工作表2 有一個欄位是 超連結
3.當我在 工作表1 新增兩列時,那麼超連結目標位置,就會換成新的位置,那我從 工作表2 點擊超連結的時候,就會移動到 工作表1 新的超連結位置
這邊有哪位高手可以知道可能用了什麼公式寫法嗎?
--
更新分享
恩..這個問題需求原由,是來自我要做資料庫結構Excel紀錄(主管想看資料庫欄位紀錄)
我用Sql查詢目前資料庫的所有資料表
select a.name [表格名稱]
,a.crdate [建檔日期]
,b.rows [資料筆數]
from sysobjects AS a
join sysindexes AS b on a.id = b.id
where (a.type = 'U') AND (b.indid IN (0, 1))
order by a.name
然後再用SQL查詢所有資料表的結構(這樣可以知道前人設定什麼備註說明、主鍵、關聯鍵FK)
declare @TmpSchema table(
TableName nvarchar(250)
,ColumnName nvarchar(250)
,ConstraintName nvarchar(250)
,XType nvarchar(50)
)
insert into @TmpSchema
SELECT A.NAME [TableName]
,c.COLUMN_NAME [ColumnName]
,B.NAME AS [ConstraintName]
,B.XTYPE
FROM SYSOBJECTS A
join SYSOBJECTS B on A.ID = B.PARENT_OBJ
join INFORMATION_SCHEMA.KEY_COLUMN_USAGE C on b.name = c.CONSTRAINT_NAME
SELECT a.Table_name [表格名稱]
,b.ORDINAL_POSITION [欄位順序]
,(
case isNull(c.XType,'')
when 'PK' then N'主鍵'
when 'F' then N'關聯鍵'
else isNull(c.XType,'')
end
) [主鍵類型]
,isNull(c.ConstraintName,'') [主鍵命名]
,b.COLUMN_NAME [欄位名稱]
,b.DATA_TYPE [資料型別]
,(
case when isNull(Convert(varchar,b.CHARACTER_MAXIMUM_LENGTH),'') = '-1'
then 'Max'
else isNull(Convert(varchar,b.CHARACTER_MAXIMUM_LENGTH),'')
end
) [長度]
,isnull(b.COLUMN_DEFAULT,'') as [預設值]
,b.IS_NULLABLE as [Null 值]
,isNull((
SELECT value
FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default)
WHERE name='MS_Description'
and objtype='COLUMN'
and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME
),'') as [欄位描述]
from INFORMATION_SCHEMA.TABLES a
left join INFORMATION_SCHEMA.COLUMNS b ON a.TABLE_NAME = b.TABLE_NAME
left join @TmpSchema c on a.Table_name = c.TableName
and b.COLUMN_NAME = c.ColumnName
where TABLE_TYPE='BASE TABLE'
order by a.TABLE_NAME
, b.ORDINAL_POSITION
早上花了點時間查Google,發現好像沒有文章,類似我想要的超連結效果
菩薩慈悲...勸退求答者...0.0
https://ithelp.ithome.com.tw/questions/10212185
後來在三個文章找到關鍵字(我自己用程式思維推敲的)
1.基本超連結的用法
https://zanzan.tw/archives/4359
2.取得目前儲存格位置
https://www.ptt.cc/bbs/Office/M.1385477705.A.43B.html
3.用VLOOKUP回傳參照的內容(影片解惑教學)
https://support.microsoft.com/zh-tw/office/vlookup-%E5%87%BD%E6%95%B8-0bbc8083-26fe-4963-8ab8-93a18ad188a1
首先我在【工作表1】建立資料,先設定取得目標儲存格的設定
ADDRESS(ROW(),COLUMN(),4)
ROW() 目前所在列
COLUMN() 目前所在欄
公式 ADDRESS 函數用法,請參考此網址教學
https://support.microsoft.com/zh-tw/office/address-%E5%87%BD%E6%95%B8-d0c26c0d-3991-446b-8de4-ab46431d4f89
那我是 ADDRESS(ROW(),COLUMN() -1 ,4),也就是取得 目前儲存格的前一欄位置
再來就是【工作表2】,這邊就花了點思考,到底怎樣才符合公式用法,畢竟我又很少用Excel..(0.0|||
想了 HYPERLINK 到底如何傳入動態值的資料,後來找到 VLOOKUP 公式,可以取得回傳資料~
於是湊出這樣的公式
HYPERLINK("#工作表1!" & VLOOKUP("Test資料",工作表1!A1:B2,2,) , "前往瀏覽")
我是先確定 VLOOKUP("Test資料",工作表1!A1:B2,2,) 抓到的資料為何,
以及測試在【工作表1】新增2列的時候,是否還能抓到資料。
測試後新增2列的時候, 發現他會自己變動儲存格
也就是
VLOOKUP("Test資料",工作表1!A1:B2,2,) 自己變動-> VLOOKUP("Test資料",工作表1!A1:B4,2,)
所以那個 ADDRESS(ROW(),COLUMN() -1 ,4) 公式,也是會自動變動 指定儲存格 的位置
以上就是我的公式寫法,不知道誰有更正確公式寫法?!
更新
感謝 froce 高手指導公式,省略 ADDRESS 函數,直接連到我要的位置~
=HYPERLINK("#工作表1!A"&MATCH("Test資料",工作表1!A:A,FALSE), "前往瀏覽")
最後改成自動依表格名稱的關鍵字搜尋~
這樣欄位無限新增情況下~工作表2的超連結目標也不會跑掉
如下圖: