Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Копирование только значений из ячеек разных листов
 
Добрый день. Возникла проблема при сборе данных с разных листов. В ячейках, которые необходимо скопировать в сводную таблицу, имеются формулы, поэтому при копировании в сводной таблице возникает "#ССЫЛКА!". Как скопировать только значения без формул и форматов? Файл и код макроса прилагаю.
Код
Sub Сбор()
Dim Sht As Worksheet
Dim iLastRow As Long
    For Each Sht In Worksheets
      If Sht.Name <> "Сводка" Then        ' кроме листа "общий"
        With Sht
          iLastRow = Cells(Rows.Count, 4).End(xlUp).Row + 1
           .Range("A7").Copy Cells(iLastRow, 4)
           .Range("C20").Copy Cells(iLastRow, 5)
           .Range("H5").Copy Cells(iLastRow, 6)
           .Range("I20").Copy Cells(iLastRow, 7)
            Cells(iLastRow, 3) = Sht.Name
        End With
      End If
    Next
End Sub
Изменено: GoHard - 3 Апр 2018 17:58:07
 
Код
Cells(iLastRow, 4)= .Range("A7").Value

и аналогично все остальное
 
GoHard, или вот так
Код
'добавить
Dim ash as worksheet
set ash=activesheet 'необязательно для активного листа (сводник) назначать переменную, но так удобнее вводить и немного надёжнее в случае случайной активации другого листа в цикле
'изменить
iLastRow = ash.Cells(Rows.Count, 4).End(xlUp).Row + 1
ash.Cells(iLastRow, 4).Value=Sht.Range("A7").Value
или же ещё проще и быстрее - через массивы и Resize

P.S.:
1. оформите свой код соответствующей кнопкой <…>
2. на самом деле, ваш код в "сводку" ничего не копирует, а копирует данные внутри одного листа…
Изменено: Jack Famous - 3 Апр 2018 17:02:17
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Jack Famous, yozhik, спасибо за оказанную помощь.

Цитата
Jack Famous написал:
2. на самом деле, ваш код в "сводку" ничего не копирует, а копирует данные внутри одного листа…
На данном этапе изучения VBA я допускаю ошибки в трактовании выполнения действий макросом. Спасибо за уточнение.  
 
код копирует, но макрос должен быть запущен с листа Сводка. Т.е. код будет копировать всё в активный лист
Изменено: yozhik - 3 Апр 2018 16:20:13
 
GoHard,
Цитата
Jack Famous написал:
оформите свой код соответствующей кнопкой  <…>
выделяете код, нажимаете эту кнопку на панели
yozhik, ну да - так сработает, но всё-равно очень опасно))
Изменено: Jack Famous - 3 Апр 2018 16:23:06
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Jack Famous, у Вас точка закралась лишняя...так даже с активного "Сводка" не скопирует..
 
yozhik, спасибо - исправил. Я её туда и влепил, потому что подумал, что на одном листе всё происходит. Люблю явные указания - так многих ошибок можно избежать…  В таком случае ваш вариант надёжнее будет.
Изменено: Jack Famous - 3 Апр 2018 16:32:07
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
yozhik, заранее предполагалось использование кнопки для запуска макроса, а она находится на листе со сводной таблицей. Ещё раз спасибо. Ваш комментарий решил мою проблему.  
Страницы: 1
Читают тему (гостей: 1)
Наверх