Как создать индекс для всех листов автоматически, у меня много клиентов, с листом для каждого клиента.Список всех листов со ссылкой
Я также хочу показать некоторые данные в индексе всех листов.
Как создать индекс для всех листов автоматически, у меня много клиентов, с листом для каждого клиента.Список всех листов со ссылкой
Я также хочу показать некоторые данные в индексе всех листов.
Loop через листы, создающие соединения для каждого из них. Это перечислит их, начиная с активной ячейки.
Sub CreateLinksToAllSheets()
Dim sh As Worksheet
Dim cell As Range
Dim strLink As String
For Each sh In ActiveWorkbook.Worksheets
If ActiveSheet.name <> sh.name Then
strLink = sh2.name
If InStr(strLink, "'") Then
strLink = Replace(strLink, "'", "''")
End If
ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & strLink & "'" & "!A1", TextToDisplay:=sh.name
' Here you can get the amount and mobile and write them to the adjacent columns.
ActiveCell.Offset(0, 1).Value = Excel.worksheetFunction.Sum(sh.Range("A:A"))
ActiveCell.Offset(0, 2).Value = sh.Range("G1").Value
ActiveCell.Offset(1, 0).Select
End If
Next sh
End Sub
Если вы хотите жестко определить, куда идут ссылки, вы можете сделать это вот так.
Sub CreateLinksToAllSheets()
Dim sh As Worksheet
Dim sh2 As Worksheet
Dim cell As Range
Dim lRow As Long
Set sh = ActiveWorkbook.Sheets("Sheet1")
lRow = 1
For Each sh2 In ActiveWorkbook.Worksheets
If ActiveSheet.name <> sh2.name AND sh2.name <> "new customer" AND sh2.name <> "old archive" Then
strLink = sh2.name
If InStr(strLink, "'") Then
strLink = Replace(strLink, "'", "''")
End If
sh.Hyperlinks.Add Anchor:=sh.Range("A" & lrow), Address:="", SubAddress:="'" & strLink & "'" & "!A1", TextToDisplay:=sh2.name
sh.Range("B" & lRow).Value = Excel.worksheetFunction.Sum(sh2.Range("A:A"))
sh.Range("C" & lRow).Value = sh2.Range("G1").Value
lRow = lRow + 1
End If
Next sh2
End Sub
РЕДАКТИРОВАТЬ: ОП спрашивает
Как можно сделать значение в столбце В и С Значение быть возобновлена внутри листов? Пример: Столбец B: = SUMMA (Customer1! A: A) Столбец C: = Customer1! G1
Свойство формулы можно использовать. Вставьте имя листа из текущего листа sh2, используя sh2.Name.
sh.Range("B" & lRow).Formula = "=SUM(" & sh2.Name & "!A:A)"
sh.Range("C" & lRow).Formula = "=" & sh2.Name & "!G1"
EDIT: OP обнаружил, что создание гиперссылки на листе, который имеет апостроф в имени не создает ссылку функционирования.
Чтобы исправить это, мы можем добавить проверку на наличие апострофа в имени листа. Если мы найдем один, мы заменим его двумя апострофами.
strLink = sh2.name
If InStr(strLink, "'") Then
strLink = Replace(strLink, "'", "''")
End If
И изменить hyperlinks.add создать Subaddress: = " '& strLink & "'"
sh.Hyperlinks.Add Anchor:=sh.Range("A" & lrow), Address:="", SubAddress:="'" & strLink & "'" & "!A1", TextToDisplay:=sh2.name
Совершенная, Как я могу сделать значение в столбце B и C Значение возобновляться из в пределах листов. Пример: Столбец B: '= SUMMA (Customer1! A: A)' Столбец C: '= Customer1! G1' Также существует исключение из одной страницы? пример: имя листа: индекс, индекс AND2 и индекс3. – Horby
@Horby. См. Редактирование моего ответа для первого вопроса. – MatthewD
Я не следую вашему второму вопросу. Также может быть исключение из одной страницы? Можете ли вы объяснить, что вы ищете, более подробно? – MatthewD