Страницы: 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 - 03.04.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 - 03.04.2018 17:02:17
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, yozhik, спасибо за оказанную помощь.

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