For the links to travel to the secondary sheets too would require VBA. Your links are technically "formatting" applied to the database sheet cells and you cannot transfer the "format" of one cell to another via formula, only values.
Here's a macro I wrote for you. I added it to your workbook and connected it to a button for you. All you need to do is fill out the columns you want an put anything in the columns to mark them as active, "x" is fine, but the macro will work for anything you put in there.
Also, this macro will create the sheets for you on-the-fly. Just add a new column and that sheet will appear next time you run the macro. Also, the macro will put the sheets in the same order as the columns, so you can move columns around anytime you want based on priorities and the sheets will move to match.
Option Explicit
Sub UpdateLinkSheets()
'Author: Jerry Beaucaire, ExcelForum.com
'Date: 2/27/2011
'Summary: Database entries updated to separate sheets for each category
Dim shName As String 'category sheet being updated
Dim LR As Long 'last row of data
Dim LC As Long 'last column with a category
Dim Col As Long 'current column (category) being used as source
'creates sheets as needed, puts sheets in correct order
Application.ScreenUpdating = False 'speed up macro
With Sheets("Database") 'all commands with a leading . affect this sheet
LC = .Cells(.Columns.Count).End(xlToLeft).Column
.AutoFilterMode = False
.Rows(1).AutoFilter
For Col = 2 To LC 'process each column from B onward one at a time
shName = .Cells(1, Col).Text 'get sheet name
If Not Evaluate("ISREF('" & shName & "'!A1)") Then 'create sheet if needed
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = shName
Else 'sheet exists, clear the current data
Sheets(shName).Move After:=Sheets(Sheets.Count)
Sheets(shName).UsedRange.Clear
End If
.Rows(1).AutoFilter Col, "*" 'filter for anything non-blank
LR = .Cells(.Rows.Count, Col).End(xlUp).Row 'check for any entries
If LR > 1 Then 'if data, copy to category sheet
Sheets(shName).Columns(1).ColumnWidth = 50
.Range("A2:A" & LR).Copy Sheets(shName).Range("A2")
Else 'no entries, make a note
Sheets(shName).Range("A2") = "no links"
End If
.Rows(1).AutoFilter Col 'show all rows again
Next Col
.AutoFilterMode = False
.Activate 'return to Database sheet if any new sheets were created
End With
Application.ScreenUpdating = True
End Sub
Bookmarks