Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос копирования диапазона данных на один лист с остальных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Макрос копирования диапазона данных на один лист с остальных
ddr Дата: Пятница, 29.03.2019, 16:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Есть макрос копирующий диапазон ячеек из других листов на определенный лист.
Он копирует формулы, можно сделать так, чтоб он копировал значения формул?

Заранее извиняюсь, файл скинуть не могу, секретный и слишком тяжелый.

[vba]
Код

Sub BuildPlan()
  
Range("A77:U3000").Select
   Selection.Delete
   
     
    Const startCell = "A5"
    Const stCell = "A73"
      
    Dim ws As Worksheet, sv As Worksheet
    Dim cell As Range, tbl As Range, shift&
      
    Set sv = ThisWorkbook.Worksheets("Svod")
    Set cell = sv.Range(stCell) ' changed
    cell.CurrentRegion.Offset(cell.Row - cell.CurrentRegion.Row).Clear
      
    For Each ws In ThisWorkbook.Worksheets
        If Not ws Is sv Then
            Set tbl = ws.Range(startCell).CurrentRegion
            shift = ws.Range(startCell).Row - tbl.Row
            If tbl.Rows.Count - shift > 0 Then
                tbl.Offset(shift).Resize(tbl.Rows.Count - shift).Copy cell
                Set cell = cell.Offset(tbl.Rows.Count - shift)
            End If
        End If
    Next
End Sub
[/vba]
 
Ответить
СообщениеЕсть макрос копирующий диапазон ячеек из других листов на определенный лист.
Он копирует формулы, можно сделать так, чтоб он копировал значения формул?

Заранее извиняюсь, файл скинуть не могу, секретный и слишком тяжелый.

[vba]
Код

Sub BuildPlan()
  
Range("A77:U3000").Select
   Selection.Delete
   
     
    Const startCell = "A5"
    Const stCell = "A73"
      
    Dim ws As Worksheet, sv As Worksheet
    Dim cell As Range, tbl As Range, shift&
      
    Set sv = ThisWorkbook.Worksheets("Svod")
    Set cell = sv.Range(stCell) ' changed
    cell.CurrentRegion.Offset(cell.Row - cell.CurrentRegion.Row).Clear
      
    For Each ws In ThisWorkbook.Worksheets
        If Not ws Is sv Then
            Set tbl = ws.Range(startCell).CurrentRegion
            shift = ws.Range(startCell).Row - tbl.Row
            If tbl.Rows.Count - shift > 0 Then
                tbl.Offset(shift).Resize(tbl.Rows.Count - shift).Copy cell
                Set cell = cell.Offset(tbl.Rows.Count - shift)
            End If
        End If
    Next
End Sub
[/vba]

Автор - ddr
Дата добавления - 29.03.2019 в 16:40
Karataev Дата: Пятница, 29.03.2019, 16:52 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
 
Ответить
Сообщение

Автор - Karataev
Дата добавления - 29.03.2019 в 16:52
ddr Дата: Пятница, 29.03.2019, 17:11 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Karataev, спасибо огромное дядя) Дай бог тебе здоровья!
 
Ответить
СообщениеKarataev, спасибо огромное дядя) Дай бог тебе здоровья!

Автор - ddr
Дата добавления - 29.03.2019 в 17:11
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!