Страницы: 1
RSS
Связная таблица образец, Таблица образец при изменении которой менялось бы оформление в других таблицах.
 
Добрый день!
Помогите, пожалуйста, решить такую задачу
Есть таблица с формулами, условным форматированием и шапкой. Она как БЛАНК. От нее создается несколько копий, в которые забиваются свои значения. Можно ли сделать так, что при изменении формул, условного форматирования, добавлении и удалении столбцов и строк в таблице БЛАНК, синхронно бы менялось оформление в остальных таблицах? Но сама бы таблица БЛАНК не менялась бы при изменениях в других таблицах
Изменено: talreep - 12.03.2025 10:23:43
 
Эх, муторно это, но в целом можно попробовать несколько вариантов:

1. Вы можете создать шаблон Excel, который будет содержать исходную таблицу-бланк. Копии таблицы можно создать на основе этого шаблона. Однако, при изменении шаблона, изменения не будут автоматически применены к существующим копиям. Для синхронизации изменений, вам нужно будет обновлять каждую копию вручную, либо создавать новый шаблон и заменять им старые копии.

2. Регнуть через мастер шаблонов. Он буквально позволяет создавать шаблоны и автоматически обновлять данные в копиях. Однако, это больше подходит для сбора данных из форм, чем для синхронизации форматирования и формул, как нужно вам.

3. Наиболее эффективный - макрос через VBA, чтобы он отслеживал изменения в бланке и применял их к копиям, но с ним нужно поработать. Используйте событие Worksheet_Change:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Укажите диапазон, который вы хотите отслеживать
    Dim sourceRange As Range
    Set sourceRange = Me.Range("A1:E10") ' Измените на нужный диапазон
    
    ' Проверка, произошли ли изменения в указанном диапазоне
    If Not Application.Intersect(sourceRange, Target) Is Nothing Then
        ' Применение изменений к копиям
        ApplyChangesToCopies Target
    End If
End Sub

Sub ApplyChangesToCopies(Target As Range)
    ' Укажите пути к копиям или имена листов в текущей книге
    Dim copyPaths() As Variant
    copyPaths = Array("C:\Path\To\Copy1.xlsx", "C:\Path\To\Copy2.xlsx")
    
    ' Или если копии находятся в той же книге
    ' Dim copySheets() As Variant
    ' copySheets = Array("Sheet2", "Sheet3")
    
    ' Применение изменений к каждой копии
    Dim i As Integer
    For i = LBound(copyPaths) To UBound(copyPaths)
        ' Открытие книги копии (если она не открыта)
        Dim copyWorkbook As Workbook
        Set copyWorkbook = Workbooks.Open(copyPaths(i))
        
        ' Применение изменений
        ApplyChangeToCopy copyWorkbook, Target
        
        ' Сохранение и закрытие книги копии
        copyWorkbook.Save
        copyWorkbook.Close
    Next i
End Sub

Sub ApplyChangeToCopy(copyWorkbook As Workbook, Target As Range)
    ' Укажите лист в копии, где нужно применить изменения
    Dim copySheet As Worksheet
    Set copySheet = copyWorkbook.Sheets(1) ' Измените на нужный лист
    
    ' Применение изменений (например, обновление формул и форматирования)
    copySheet.Range(Target.Address).Value = Target.Value
    copySheet.Range(Target.Address).Font.Bold = Target.Font.Bold
    copySheet.Range(Target.Address).Interior.ColorIndex = Target.Interior.ColorIndex
End Sub
Код будет запускаться каждый раз, когда в исходной таблице меняются данные, и применять эти изменения к копиям.

Нужно будет настроить пути к копиям (copyPaths) или имена листов (copySheets), а также диапазон (sourceRange), который хотите отслеживать. Так же мой код может обрабатывать несколько копий, указанных в массиве copyPaths и чекать изменения в sourceRange.

И не забудьте, что он должен быть размещен в модуле листа исходной таблицы, чтобы событие Worksheet_Change срабатывало при изменении данных в этом листе.
Изменено: Bug Hunter - 13.03.2025 01:33:28
One tap - one kill
 
Ого, действительно муторно. Со скриптами в таблицах я еще не работал, но в целом подозревал, что в них заключается решение.

От души благодарю, Вас!
Сейчас буду разбираться с этим
 
Странный подход. Не проще пересобрать данные в новый, измененный бланк? Можно макросом
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Читают тему
Наверх