Макрос excel для копирования таблиц

Отлично, спасибо тебе. Я с макросами вообще не дружу, можешь поправить код чтоб при сохранении запрашивал имя файла, так же возможно сохранить ширину колонок при копировании, а то все колонки сжимаются как при стандартном виде. Так же можно сделать чтоб не сохранялись последние 3 строки под таблицей и пятая (если смотреть снизу), то есть нужно чтоб под таблицей только осталась «общая сумму в юанях»

Добавлено через 51 минуту
немного подредактировал, вообщем
1. не могу добиться чтоб колонки сохраняли свой размер, причина скорее всего в этом:

Отчет о совместимости для Заказ.xls
Дата отчета: 7/28/2013 16:01

Некоторые свойства данной книги не поддерживаются более ранними версиями Excel. Открытие книги в более ранней версии Excel или ее сохранение в формате более ранней версии приведет к потере или ограничению функциональности этих свойств.

Несущественная потеря точности Число экземпляров Версия

Некоторые ячейки или стили в этой книге содержат форматирование, не поддерживаемое выбранным форматом файла. Эти форматы будут преобразованы в наиболее близкий из имеющихся форматов. 20 Excel 97-2003

Можете поправить код под 2010.
2. Как заставить прописывать имя я нашел где, а вот как заставить спрашивать имя документа перед сохранением?
3. не могу прописать чтоб последние 5 строки под таблицей не сохранялись, их под таблицей 8, нужно чтоб сохранялись 3 первые

Добавлено через 1 час 19 минут
Размер столюцов в сохраненной таблице должен быть:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Columns("A:A").Select
    Selection.ColumnWidth = 12.86
    Columns("B:B").Select
    Selection.ColumnWidth = 10.86
    Columns("C:C").Select
    Selection.ColumnWidth = 14.43
    Columns("D:D").Select
    Selection.ColumnWidth = 21.71
    Columns("E:E").Select
    Selection.ColumnWidth = 41.29
    Columns("F:F").Select
    Selection.ColumnWidth = 6.86
    Columns("G:G").Select
    Selection.ColumnWidth = 10.29

как (куда) прописать его в этот код

Цитата
Сообщение от Alex77755
Посмотреть сообщение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 28.07.2013 (Александр)
    Dim LR
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A1:G" & LR).Copy
    Workbooks.Add
    ActiveSheet.Paste
    ActiveSheet.Shapes("Блок-схема: ИЛИ 1").Cut
    Range("F" & LR - 1 & ":G" & LR - 1).UnMerge
    Range("F" & LR - 1 & ":G" & LR - 1).ClearContents
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
    ChDir "D:"
    ActiveWorkbook.SaveAs Filename:="D:1.xls", FileFormat:=xlNormal, Password _
        :="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:= _
        False
End Sub

Kizirus, опечатка в коде. Для проверки сделайте

Кстати не Вы первый…
Пока это не поправите — далее код писать рано.
Ну а рамки — это тогда проще копировать не данные через массив, а весь диапазон. Ну или отдельно формат.
Вот копирование диапазона в цикле, косяк поправил:

Код
Sub makros()
    Dim lLastRow As Long
    With Range("B7").CurrentRegion
        lLastRow = .Cells(.Cells.CountLarge).Row
    End With

    If lLastRow < 2 Then Exit Sub

    Dim rngSrc As Range
    Set rngSrc = Range("B7:G" & lLastRow)

    For i = 1 To [g3]
        With Range("B7").CurrentRegion
            lLastRow = .Cells(.Cells.CountLarge).Row + 1
        End With

        Dim rngArchiv As Range
        Set rngArchiv = Range("B" & lLastRow & ":G" & (lLastRow + rngSrc.Rows.CountLarge - 1))

        rngSrc.Copy rngArchiv.Cells(1)
    Next
End Sub

Ребята, помогите пожалуйста рядовому бухгалтеру.

Я работаю с таблицей на одном листе, делаю ряд преобразований, потом мне эту таблицу нужно скопировать и перенести на другой лист и вставить начиная с определенной строки. Я автоматически записала макрос, но проблема в том, что он мне все время копирует таблицу в одно и то же место (т.е. в самое начало листа), а мне надо, чтобы он копировал ее именно с той ячейки где у меня курсор находится. Как это сделать подскажите, пожалуйста.

Sub Macro7()

    Rows(«1:1»).Select
    Selection.Delete Shift:=xlUp
    Cells.Select
    Selection.Sort Key1:=Range(«A1»), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Selection.Copy
    Sheets(«Master»).Select
    ActiveSheet.Paste
End Sub

И еще… Для того чтобы скопировать таблицу я обычно нажимаю Ctrl+A, что конечно же не совсем правильно — он ведь выделяет абсолютно все ячейки листа. А существует какая-то комбинация клавиш, чтобы выделить только диапазон заполненный данными? У меня таблица по длинне и ширине каждый день меняется и я хочу пользоваться макросом который бы копировал все данные из этой таблицы независимо от колличества строк и столбцов на другой лист автоматически.

Зараннее всем огромное спасибо.


Цитата: JennyK от 13.05.2009, 03:59
Ребята, помогите пожалуйста рядовому бухгалтеру.

Привет коллега!

Цитировать
Я работаю с таблицей на одном листе, делаю ряд преобразований, потом мне эту таблицу нужно скопировать и перенести на другой лист и вставить начиная с определенной строки. Я автоматически записала макрос, но проблема в том, что он мне все время копирует таблицу в одно и то же место (т.е. в самое начало листа), а мне надо, чтобы он копировал ее именно с той ячейки где у меня курсор находится. Как это сделать подскажите, пожалуйста.

Sub Macro7()

    Rows(«1:1»).Select
    Selection.Delete Shift:=xlUp
    Cells.Select
    Selection.Sort Key1:=Range(«A1»), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Selection.Copy
    Sheets(«Master»).Select
    ActiveSheet.Paste
End Sub

Попробуй вот так:

Sub Macro7()
    Dim blok As Object
    Dim nREnd As Long
    Dim nCEnd As Integer, k As Integer

        With ThisWorkbook
        With .ActiveSheet
            Set blok = .Cells(1, 1).CurrentRegion
            nREnd = blok.Rows.Count
            nCEnd = blok.Columns.Count

                .Rows(1).Delete Shift:=xlUp

                Range(.Cells(1, 1), .Cells(nREnd, nCEnd)).Sort Key1:=Range(.Cells(1, 1), .Cells(1, 1)), _
                    Order1:=xlAscending, _
                    Header:=xlGuess, _
                    OrderCustom:=1, _
                    MatchCase:=False, _
                    Orientation:=xlTopToBottom, _
                    DataOption1:=xlSortNormal
            Range(.Cells(1, 1), .Cells(nREnd, nCEnd)).Copy
        End With

        k = 5
        With Worksheets(«Master»)
            .Paste Destination:=.Range(.Cells(k, 1), .Cells(nREnd + k, nCEnd + k))
        End With
    End With
End Sub

ЦитироватьИ еще… Для того чтобы скопировать таблицу я обычно нажимаю Ctrl+A, что конечно же не совсем правильно — он ведь выделяет абсолютно все ячейки листа. А существует какая-то комбинация клавиш, чтобы выделить только диапазон заполненный данными?

А зачем комбинация клавишь? CurrentRegion и дело в шляпе!

ЦитироватьУ меня таблица по длинне и ширине каждый день меняется и я хочу пользоваться макросом который бы копировал все данные из этой таблицы независимо от колличества строк и столбцов на другой лист автоматически.

Зараннее всем огромное спасибо.

Путей к вершине — множество. Этот один из многих!



Дублирование таблицы на другой лист нужных столбцов

lebensvoll

Дата: Среда, 05.12.2018, 12:02 |
Сообщение № 1

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

Добрый день многоуважаемые форумчане.
Прошу Вас помощи в решении.
ЧЕСТНО! Пытался сам, пытал ГУГЛ помощи, смотрел в книгу «видел фигу %) :'( » и все это в течении двух суток.
Информации очень много с решением, но увы не смог достичь что нужно мне.
Имеется таблица «Отгрузка» на листе1, условие такое
Нужно чтоб при любом изменении в данной таблице эти данные «дублировались, копировались» на лист2 в таблицу (пусть будет «Отчет») но не вся полностью а лишь три ДАТА, НОМЕР СЧЕТ.
Прекрасно понимаю что для каких либо изменений в таблице я должен применить вот этот код

Но тут я потерялся совсем
Объявление переменных, поиск последней строки, выделение, копирование на другой лист в нужный мне диапазон %)
Наткнулся на код который копирует но всю таблицу переносит на нужный лист но не как таблицу а лишь значения
Прошу Вас подскажите как более правильно преобразовать код в нужное мне русло, спасибо за ранее за ответы
Сам код вот
[vba]

Код

Sub iCopy()
Dim Sht As Worksheet
Dim iLastRow As Long
  iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For Each Sht In Worksheets
      If Sht.Name <> «Лист1» Then
       If Sht.Name = «Лист2» Then
         With Sht
            Range(«A3:D» & iLastRow).Copy
            .Cells(3, 1).PasteSpecial xlPasteColumnWidths
            .Cells(3, 1).PasteSpecial xlPasteValues
         End With
       End If
      End If
    Next
End Sub

[/vba]
Пытался записать свое действие и применить это все для листа3 при этом на листе1 применить Worksheet_Change тогда код ругается
[vba]

Код

Sub Макрос2()
‘ Макрос2 Макрос
    Range(«A2:A8,C2:D8»).Select
    Range(«Отгрузка[[#Headers],[номер]]»).Activate
    Application.CutCopyMode = False
    Selection.Copy
    Sheets(«Лист3»).Select
    Range(«A2»).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveSheet.ListObjects.Add(xlSrcRange, Range(«$A$2:$C$8»), , xlYes).Name = _
        «Таблица2»
    Range(«Таблица2[#All]»).Select
End Sub

[/vba]

ааааааа

К сообщению приложен файл:

1203623.xlsm
(21.1 Kb)


Кто бы ты ни был, мир в твоих руках

 

Ответить

boa

Дата: Среда, 05.12.2018, 12:40 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

Здравствуйте, lebensvoll,
вам надо что бы скопировались изменения, т.е. было-стало?
или просто колонки целиком?
Если целиком, то можно добавить таблицу которая будет ссылаться на таблицу «Отгрузка» и обновлять ее по удобному событию: то ли внесение изменений, то ли активация/деактивация листа

В примере добавил таблицу и события. Не нужное закомментируйте.
ну или
[vba]

Код

Sheets(«Лист1»).Range(«A2:A8,C2:C8,D2:D8»).Copy Sheets(«Лист3»).Cells(2, 1)

[/vba]

К сообщению приложен файл:

1203623.7z
(41.9 Kb)


 

Ответить

lebensvoll

Дата: Среда, 05.12.2018, 12:49 |
Сообщение № 3

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

boa, спасибо за отзывчивость…
Но файл не смог открыть [img][/img]

Цитата

вам надо что бы скопировались изменения, т.е. было-стало?

Нужно чтоб при любых изменениях в таблице на листе 1 (данные «копировались, дублировались» Не вся таблица а лишь 1;3;4 графы) на другой лист2 в таблицу


Кто бы ты ни был, мир в твоих руках

 

Ответить

boa

Дата: Среда, 05.12.2018, 12:56 |
Сообщение № 4

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

lebensvoll, надо пересоздать таблицу на sheet1, а то она ссылается на мой путь


 

Ответить

boa

Дата: Среда, 05.12.2018, 13:01 |
Сообщение № 5

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

или используйте копирование
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(«Отгрузка[#All]»)) Is Nothing Then
        Application.EnableEvents = 0
        Range(«A2:A8,C2:C8,D2:D8»).Copy Sheets(«Лист3»).Cells(2, 1)
        Application.EnableEvents = 1
    End If
End Sub

[/vba]


 

Ответить

boa

Дата: Среда, 05.12.2018, 13:06 |
Сообщение № 6

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

можно даже столбцы целиком
[vba]

Код

Range(«A:A,C:D»).Copy Sheets(«Лист2»).Cells(1, 1)

[/vba]


 

Ответить

lebensvoll

Дата: Среда, 05.12.2018, 13:35 |
Сообщение № 7

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

boa, Спасибо огромное!!!
Блин это все можно было лишь в одну строку прописать :o
Но буду все равно искать и пробывать как сделать так (вот оператор дополнил таблицу новыми данными «увеличил диапазон» примерно) тогда код уже не приемлем :(
Спасибо еще раз


Кто бы ты ни был, мир в твоих руках

 

Ответить

_Boroda_

Дата: Среда, 05.12.2018, 13:50 |
Сообщение № 8

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

это фигня. А вот если уменьшил кол-во строк, вот здесь засада
Я бы вот так написал. Пробегается по второй таблице, берет названия столбцов, ищет их в первой таблице и копирует найденный столбец
Обработчик ошибки в случае ненахождения искомого столбца самостоятельно добавьте там, я забыл
Добавил. Файл перевложил
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(«Отгрузка»)) Is Nothing Then
        Set tb1_ = Sheets(«Лист3»).ListObjects(«Таблица2»)
        With tb1_
            nc_ = .ListColumns.Count
            nr_ = .ListRows.Count
            If nr_ Then
                .Range(1).Offset(1).Resize(nr_, nc_).Delete
            End If
            On Error Resume Next
            For i = 1 To nc_
                Range(«Отгрузка[» & .Range(i) & «]»).Copy .Range(nc_ + i)
            Next i
            On Error GoTo 0
        End With
    End If
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

lebensvoll

Дата: Среда, 05.12.2018, 15:50 |
Сообщение № 9

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

_Boroda_, Ваш пример более выразителен и убийственен в решении задачи…
Но увы…
Данный пример хотел применить для файла другого :( :'( %)
(Другие листы скрыты) имеется два листа (Отгрузка и Отчет списание). Задача моя была в следующем (ну как думал Я, в итоге подход был задуман не верен)
Оператор вносит отгрузку в таблицу Отгрузка на листе Отгрузка по кнопке.
Как только данная запись была внесена, то она сразу дублируется (куском, не все таблица а нужное) на другой лист.
Ваш код Александр гениален но почему то для моего примера он не подошел. Но хотя не могу понять почему. Ведь даже на Вашем примере если бы я добавил новую хоть какую то запись то она дополняется сразу на другой лист.
А скопировал его в файл (((( потерпел крах
Он работает если я после внесении новой записи изменяю что то либо в таблице тогда она сразу на ура работает.

К сообщению приложен файл:

_1.xlsm
(71.5 Kb)


Кто бы ты ни был, мир в твоих руках

 

Ответить

boa

Дата: Среда, 05.12.2018, 15:53 |
Сообщение № 10

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

lebensvoll, если оператор увеличивает количество строк(что есть нормально), то используйте копирование из сообщения №6
определив последнюю строку можно переписать Range
[vba]

Код

    Dim LastRow&: LastRow = Me.UsedRange.SpecialCells(xlLastCell).Row
    Range(«A2:A» & LastRow & «,C2:C» & LastRow & «,D2:D» & LastRow).Copy Sheets(«Лист3»).Cells(2, 1)

[/vba]
ну а если он столбцы будет добавлять/двигать, то можно финдом по заголовку таблицы пройтись и определить копируемый диапазон.
[vba]

Код

Sub NewMacros()
    Dim LastRow&, LetterCol$, AddressRange$, a
    With Sheets(«Лист1»)
        LastRow = .UsedRange.SpecialCells(xlLastCell).Row   ‘получаем номер последней строки
        For Each a In Array(«дата», «номер», «счет»)
            LetterCol = Split(.Columns(.Range(«Отгрузка[[#Headers]]»).Find(a, LookIn:=xlValues, LookAt:=xlWhole).Column).Address(0, 0), «:»)(0)    ‘получаем букву столбца
            AddressRange = AddressRange & IIf(Len(AddressRange) > 0, «,», «») & LetterCol & «2:» & LetterCol & LastRow    ‘генерируем строку адреса
        Next
        .Range(AddressRange).Copy Sheets(«Лист3»).Cells(2, 1)
    End With
End Sub

[/vba]


Сообщение отредактировал boaСреда, 05.12.2018, 15:54

 

Ответить

boa

Дата: Среда, 05.12.2018, 16:20 |
Сообщение № 11

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

а что бы отрабатывало и для новых строк таблицы в модульлиста вставьте
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim iCol&, a
    With Me
        For Each a In Array(«дата», «номер», «счет»)
            iCol = .Range(«Отгрузка[[#Headers]]»).Find(a, LookIn:=xlValues, LookAt:=xlWhole).Column
            If Target.Column = iCol Then Call NewMacros: Exit Sub
        Next
    End With
End Sub

[/vba]


 

Ответить

_Boroda_

Дата: Среда, 05.12.2018, 16:25 |
Сообщение № 12

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

А все потому, что кто-то до сих пор не выучил п.3 Правил форума и кладет примеры, несоответствующие реальным файлам
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(«Отгрузка»)) Is Nothing Then
        Set tb1_ = Sheets(«Отчет списание»).ListObjects(«Отчет»)
        With tb1_
            nc_ = .ListColumns.Count
‘            nr_ = .ListRows.Count
‘            If nr_ Then
‘                .Range(1).Offset(1).Resize(nr_, nc_).Delete
‘            End If
            On Error Resume Next
            For i = 1 To nc_
                Range(«Отгрузка[» & .Range(i) & «]»).Copy .Range(nc_ + i)
            Next i
            On Error GoTo 0
        End With
    End If
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

lebensvoll

Дата: Среда, 05.12.2018, 16:44 |
Сообщение № 13

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

_Boroda_, спорить не буду. Простите если что не так…
Но задача ведь была аналогична задумке на другом листе. Но понимание того что ошибочно пришло с ответом.
Потому как в теме поста был файл с данными которые просто либо заполняются или дополняются. А куда это решение хотел применить дополнение через кнопку
Но я то думал что и там и там умные таблицы и итог решения одинаков
Закоментирование части кода не дало решения. Запись вносится а на другой лист она дублируется лишь тогда когда начинаешь корректировать записи в таблице.
[vba]

Код

‘            nr_ = .ListRows.Count
‘            If nr_ Then
‘                .Range(1).Offset(1).Resize(nr_, nc_).Delete
‘            End If

[/vba]
Мое мнение возможно ли что нужно как то прописать определение последней ячейки в таблице. Но не уверен в логике
[vba]

Код

lLastRow = Cells(Rows.Count,1).End(xlUp).Row

[/vba]
Скорее всего можно поступить иначе и привязаться к кнопке «Внесения записи» но тогда теряется «задача». Потому как оператор может потом взять и удалить запись из таблицы :'( в одной таблицы запись будет а в другой не будет. Или еще хуже в одной она будет с одними данными (а потом оператор меняет что нибудь, есть такое за ними) а у меня будут записаны другие данные….


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvollСреда, 05.12.2018, 16:52

 

Ответить

boa

Дата: Среда, 05.12.2018, 16:58 |
Сообщение № 14

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

lebensvoll,
у вас на кнопке стоит EnableEvents = False следовательно ни какие события не будут обрабатываться.
в т.ч. и Worksheet_Change


Сообщение отредактировал boaСреда, 05.12.2018, 16:59

 

Ответить

lebensvoll

Дата: Среда, 05.12.2018, 17:04 |
Сообщение № 15

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

_Boroda_, Ну вот смотрите
на листе ОТГРУЗКА оператором вносится запись, которую он формирует тут
[img][/img]
Затем вносит эти данные в таблицу на лист Отгрузка при нажатии кнопки
[img][/img]
Данные вносятся в таблицу
[img][/img]
И как только эти данные внеслись в таблицу то они дублируются на лист Отчет списание
Но лишь часть нужных столбцов из таблицы Отгрузка (Дата; Контрагент; Госномер ТС; Продукция; Количество)
[img][/img]
Но есть нюанс.
Любые изменения в таблице Отгрузка, должны сразу же дублироваться (конечно же интересует лишь столбцы Дата; Контрагент; Госномер ТС; Продукция; Количество) в другой таблице Отчет.
Ваше решение было отличным и оно срабытавает.
Но лишь только тогда когда оператор производит изменения в таблице Отгрузка. А вот когда появляется новая запись увы (хотя в файле первого файла сообщения №8 она срабатывает на ура просто. К примеру я беру и протягиваю таблицу дальше на две три строки и забиваю туда информация и как только я ее завершаю они дублируются). ПОЧЕМУ ТАК ТО


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvollСреда, 05.12.2018, 17:07

 

Ответить

_Boroda_

Дата: Среда, 05.12.2018, 17:10 |
Сообщение № 16

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

В макрос для кнопки последней строкой (перед End sub) добавьте
[vba]

Код

Range(«Отгрузка»).Cells(1) = Range(«Отгрузка»).Cells(1)

[/vba]

См. пост boa выше

К сообщению приложен файл:

_1-5-1.xlsm
(65.4 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Сообщение отредактировал _Boroda_Среда, 05.12.2018, 17:11

 

Ответить

lebensvoll

Дата: Среда, 05.12.2018, 20:38 |
Сообщение № 17

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

_Boroda_, :o
Вот ну как так то одна строка а запрещала дальнейшее событие на листе %)
hands СПАСИБО ВАМ ОГРОМНОЕ АЛЕКСАНДР!!!
boa, Вам также!!! hands yes


Кто бы ты ни был, мир в твоих руках

 

Ответить

Содержание

  1. Как сделать, чтобы информация из одного листа автоматически передавалась и отображалась на втором листе
  2. Данная статья о том, как связать таблицы, чтобы данные из одной таблицы автоматически переносились во вторую.
  3. Первый, самый простой и примитивный способ связи двух таблиц на разных листах документа -вставка данных при помощи опции специальной вставки.
  4. Второй способ переноса данных из одной таблицы в другую — это использование сводных таблиц в программе «Excel».
  5. Как делать сводные таблицы в программе «Excel» и для чего они нужны.
  6. Третий способ самый эффективный и наиболее автоматизированный — это использование меню надстройки «Power Query».
  7. Смысл способа в следующем:
  8. Как перенести данные из одного файла excel в другой файл excel
  9. Как перенести данные из одного файла excel в другой файл excel
  10. Копирование таблицы с сохранением структуры
  11. Способ 1: Специальная вставка
  12. Способ 2: Выделение столбцов перед копированием
  13. Способ 3: Вставка формул с сохранением формата
  14. 5 различных методов переноса данных с одного листа Excel на другой
  15. Практический сценарий
  16. Методы передачи данных из одной книги Excel в другую
  17. Метод № 1: автоматически Обновление одного листа Excel с другого листа
  18. Метод № 2: обновить электронную таблицу Excel данными из другой электронной таблицы
  19. Метод № 3: Как автоматически скопировать данные из одной ячейки в другую в Excel
  20. Метод № 4: Как скопировать данные с одного листа на другой в Excel с помощью формулы
  21. Метод № 5: копирование данных с одного листа на другой в Excel с помощью макросов
  22. Рекомендуемое решение: средство восстановления и восстановления MS Excel
  23. Как скопировать таблицу в Excel

Как сделать, чтобы информация из одного листа автоматически передавалась и отображалась на втором листе

Данная статья о том, как связать таблицы, чтобы данные из одной таблицы автоматически переносились во вторую.

Приведу три способа Автоматического переноса данных с одного листа программы «Эксель» в другой.

Первый, самый простой и примитивный способ связи двух таблиц на разных листах документа -вставка данных при помощи опции специальной вставки.

Рассмотрим, как соединить две таблицы по шагам.

Первый шаг.

Необходимо выделить ту таблицу, из которой будут транслироваться данные во вторую таблицу.

Второй шаг.

Копировать информацию сочетанием клавиш ctrl+C или вызвав контекстное меню правой кнопкой мыши и кликнув по пункту меню «Копировать»

Третий шаг.

Перейти на лист документа «Excel», в который Вы планируете транслировать информацию из первой таблицы.

Четвертый шаг.

Поставить курсор в первую (левую верхнюю) ячейку таблицы и выбрать в меню «Вставка» пункт «Вставить связь». В некоторых версиях программы «Excel» этот пункт находится в меню «Специальная вставка»

После вставки связи следует отформатировать вид ячеек – привести их к надлежащему виду.

Результат вставки связи

Второй способ переноса данных из одной таблицы в другую — это использование сводных таблиц в программе «Excel».

При использовании данного метода роль второй таблицы («реципиента») играет сама сводная таблица.

Как обновить сводную таблицу

При клике правой кнопкой мыши по сводной таблице и нажатии на пункт «Обновить» сводная таблица автоматически перенесет все данные из связанного массива информации («таблицы донора»).

О том, как в «Эксель» создавать сводные таблицы подробно написано в статье:

Как делать сводные таблицы в программе «Excel» и для чего они нужны.

Третий способ самый эффективный и наиболее автоматизированный — это использование меню надстройки «Power Query».

Правда нужно отметить, что этот способ подходит только пользователям Excel 2016 и пользователям Excel 2013и выше с установленной надстройкой «Power Query».

Смысл способа в следующем:

Необходимо открыть вкладку «Power Query». В разделе «Данные Excel» нажимаем кнопку (пиктограмму) «Из таблицы».

Из таблицы -Power Query

Далее нужно выбрать диапазон ячеек, из которых нужно «притянуть» информацию и нажимаем «Ок».

Источник данных для запроса Power Query

После выбора области данных появится окно настройки вида новой таблицы. В этом окне Вы можете настроить последовательность вывода столбцов и удалить ненужные столбцы.

После настройки вида таблицы нажмите кнопку «Закрыть и загрузить»

Обновление полученной таблицы происходит кликом правой кнопки мыши по названию нужного запроса в правой части листа (список «Запросы книги»). После клика правой кнопкой мыши в выпадающем контекстном меню следует нажать на пункт «Обновить»

Обновление запроса в PowerQuery

Источник

Как перенести данные из одного файла excel в другой файл excel

Как перенести данные из одного файла excel в другой файл excel

Всем, кто работает с Excel, периодически приходится переносить данные из одной таблицы в другую, а зачастую и просто копировать массивы в разные файлы. При этом необходимо сохранять исходные форматы ячеек, формулы, что в них находятся, и прочие переменные, которые могут потеряться при неправильном переносе.

Давайте разберёмся с тем, как переносить таблицу удобнее всего и рассмотрим несколько способов. Вам останется лишь выбрать тот, что наилучшим образом подходит к конкретной задачи, благо Microsoft побеспокоилась об удобстве своих пользователей в любой ситуации.

Копирование таблицы с сохранением структуры

Если у вас есть одна или несколько таблиц, форматирование которых необходимо сохранять при переносе, то обычный метод Ctrl+CCtrl+V не даст нужного результата.

В результате мы получим сжатые или растянутые ячейки, которые придётся вновь выравнивать по длине, чтобы они не перекрывали информацию.

Расширять вручную таблицы размером в 20-30 ячеек, тем более, когда у вас их несколько, не самая увлекательная задача. Однако существует несколько способов значительно упростить и оптимизировать весь процесс переноса при помощи инструментов, уже заложенных в программу.

Способ 1: Специальная вставка

Этот способ подойдёт в том случае, если из форматирования вам достаточно сохранить ширину столбцов и подтягивать дополнительные данные или формулы из другого файла/листа нет нужды.

  1. Выделите исходные таблицы и проведите обычный перенос комбинацией клавиш Ctrl+CCtrl+V.
  2. Как мы помним из предыдущего примера, ячейки получаются стандартного размера. Чтобы исправить это, выделите скопированный массив данных и кликните правой кнопкой по нему. В контекстном меню выберите пункт «Специальная вставка».

В результате у вас получится таблица идентичная той, что была в первом файле. Это удобно в том случае, если у вас десятки столбцов и выравнивать каждый, стандартными инструментами, нет времени/желания. Однако в этом методе есть недостаток — вам все равно придётся потратить немного времени, ведь изначально скопированная таблица не отвечает нашим запросам. Если это для вас неприемлемо, существует другой способ, при котором форматирование сохранится сразу при переносе.

Способ 2: Выделение столбцов перед копированием

В этом случае вы сразу получите нужный формат, достаточно выделить столбцы или строки, в зависимости от ситуации, вместе с заголовками. Таким образом, изначальная длина и ширина сохранятся в буфере обмена и на выходе вы получите нужный формат ячеек. Чтобы добиться такого результата, необходимо:

  1. Выделить столбцы или строки с исходными данными.
  2. Просто скопировать и вставить, получившаяся таблица сохранит изначальный вид.

В каждом отдельном случае рациональней использовать свой способ. Однако он будет оптимален для небольших таблиц, где выделение области копирования не займёт у вас более двух минут. Соответственно, его удобно применять в большинстве случаев, так как в специальной вставке, рассмотренной выше, невозможно сохранить высоту строк. Если вам необходимо выровнять строки заранее – это лучший выбор. Но зачастую помимо самой таблицы необходимо перенести и формулы, что в ней хранятся. В этом случае подойдёт следующий метод.

Способ 3: Вставка формул с сохранением формата

Специальную вставку можно использовать, в том числе, и для переноса значений формул с сохранением форматов ячеек. Это наиболее простой и при этом быстрый способ произвести подобную операцию. Может быть удобно при формировании таблиц на распечатку или отчётностей, где лишний вес файла влияет на скорость его загрузки и обработки.

Чтобы выполнить операцию, сделайте следующее:

  1. Выделите и скопируйте исходник.
  2. В контекстном меню вставки просто выберите «Значения» и подтвердите действие.

Вместо третьего действия можно использовать формат по образцу. Подойдёт, если копирование происходит в пределах одного файла, но на разные листы. В простонародье этот инструмент ещё именуют «метёлочкой».

Перенос таблицы из одного файла в другой не должен занять у вас более пары минут, какое бы количество данных не находилось в исходнике. Достаточно выбрать один из описанных выше способов в зависимости от задачи, которая перед вами стоит. Умелое комбинирование методов транспортировки таблиц позволит сохранить много нервов и времени, особенно при составлении квартальных сводок и прочей отчётности. Однако не забывайте, что сбои могут проходить в любой программе, поэтому перепроверяйте данные, прежде чем отправить их на утверждение.

5 различных методов переноса данных с одного листа Excel на другой

Как мы все знаем, Microsoft Excel — очень полезная и популярная рабочая книга, которую пользователи могут хранить любые важные данные.

В Microsoft Excel пользователи могут выполнять несколько различных типов задач, таких как автоматически переносить данные с одного листа Excel на другой, обновлять один лист Excel с другого листа , копировать данные с одного листа на другой в Excel и т. д. для удобства.

Но сегодня в этом моем сообщении блога я расскажу о , как автоматически копировать данные из одной ячейки в другую в Excel ? Кроме того, узнайте , как автоматически обновлять один лист Excel с другого листа, автоматически переносить данные с одного листа Excel на другой, и многое другое подробно.

Итак, просто внимательно просмотрите этот блог.

Практический сценарий

Хорошо, сначала я должен упомянуть, что я полный любитель когда дело доходит до превосходства. У меня нет опыта работы с VBA или макросами, поэтому, если вы не уверены, знаю ли я что-то еще, вероятно, не знаю.

У меня есть рабочая тетрадь с 6 листами внутри; один из листов — мастер; это просто остальные 6 листов, составленные в один большой. Мне нужно настроить его так, чтобы любые новые данные, введенные в новые отдельные листы, автоматически вводились в мастер-лист в первой пустой строке.

Столбцы не одинаковы на всех листах. . Надеюсь, здесь профи будет легче, чем мне, в этом я бился головой о стену. Я буду тщательно проверять эту ветку, поэтому, если вам понадобится дополнительная информация, просто дайте мне знать …

Заранее благодарим за любую помощь.

Источник: https://ccm.net/forum/affich-1019001-automatically-update-master-worksheet-from- другие рабочие листы

Методы передачи данных из одной книги Excel в другую

Существует множество различных способов переноса данных из одной книги Excel в другую , и они следующие:

Метод № 1: автоматически Обновление одного листа Excel с другого листа

В книге MS Excel мы можем легко обновить данные, связав один лист с другим. Эта ссылка известна как динамическая формула, которая автоматически передает данные из одной книги Excel в другую .

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

Ниже приведены две разные точки для связывания Excel. данные книги для автоматических обновлений.

1) С использованием функции копирования и вставки

  • В исходный лист, выберите и скопируйте данные, которые вы хотите связать на другом листе.
  • Теперь на целевом листе Вставьте данные, к которым вы связали исходный лист ячейки.
  • После этого выберите меню Вставить ссылку из Другие параметры вставки в книге Excel

  • Сохраните всю свою работу из исходного рабочего листа перед его закрытием.

2) Введите формулу вручную

  • Откройте целевой рабочий лист, коснитесь ячейки, в которой есть формула связи, и поместите знак равенства (=) поперек нее.
  • Теперь перейдите к источник ш eet и коснитесь ячейки, в которой есть данные. нажмите Enter на клавиатуре и сохраните свои задачи.

Примечание- Всегда помните одну вещь, что формат исходного рабочего листа и конечный рабочий лист одинаковы.

Метод № 2: обновить электронную таблицу Excel данными из другой электронной таблицы

Чтобы обновить электронные таблицы Excel данными из другой электронной таблицы, просто следуйте приведенным ниже пунктам, которые будут применимы к версии Excel 2019, 2016, 2013, 2010, 2007.

  • Сначала перейдите в меню Данные .
  • Выберите параметр Обновить все

  • Здесь вы должны увидеть, когда и как обновляется соединение
  • Теперь щелкните любую ячейку, содержащую подключенные данные.
  • Снова в меню Данные , cli ck на стрелке рядом с параметром Обновить все и выберите Свойства соединения

  • После этого в меню Использование установите параметры которые вы хотите изменить.
  • На вкладке Использование установите любые параметры, которые вы хотите изменить.

Примечание. Если размер книги данных Excel большой, я рекомендую регулярно проверять меню Включить фоновое обновление .

Метод № 3: Как автоматически скопировать данные из одной ячейки в другую в Excel

Чтобы скопировать данные из одной ячейки в другую в Excel, просто выполните следующие пункты, указанные ниже:

  • Сначала откройте исходный рабочий лист и целевой рабочий лист.
  • На исходном листе перейдите к листу, который вы хотите переместить или скопировать.
  • Теперь нажмите меню Главная и выберите параметр Формат .
  • Затем выберите «Переместить или скопировать лист» в разделе «Организовать листы».
  • После этого снова в в меню Главная выберите параметр Формат в группе ячеек.
  • Здесь в Переместить или скопировать выберите целевой лист, и Excel отобразит только открытые листы в списке.

  • Иначе, если вы хотите скопировать рабочий лист вместо перемещения, сделайте копию книги Excel перед

  • Наконец, нажмите ОК кнопку, чтобы скопировать или переместить целевую электронную таблицу Excel.

Метод № 4: Как скопировать данные с одного листа на другой в Excel с помощью формулы

Вы можете копировать данные с одного листа на другой в Excel с помощью формулы . Вот шаги, которые необходимо выполнить:

  • Для копирования и вставки ячейки Excel в текущий рабочий лист Excel, , например; скопируйте ячейку От A1 до D5, вы можете просто выбрать целевую ячейку D5, затем ввести = A1 и нажать клавишу Enter, чтобы получить значение A1.
  • Для копирования и вставки ячеек с одного рабочего листа на другой, например скопируйте ячейку A1 листа Sheet1 в ячейку D5 листа Sheet2, выберите ячейку D5 на листе Sheet2, затем введите = Sheet1! A1 и нажмите клавишу Enter, чтобы получить значение.

Метод № 5: копирование данных с одного листа на другой в Excel с помощью макросов

С помощью макросов вы можете копировать данные с одного рабочего листа на другой , но перед этим вот несколько важных советов, о которых вы должны позаботиться:

  • Правильно сохраняйте расширение файла в вашу книгу Excel.
  • Не обязательно, чтобы ваша электронная таблица имела поддержку макросов для выполнения этой задачи.
  • Код Выбранные вами файлы также могут быть сохранены на другом листе.
  • Поскольку коды уже указывают детали, нет необходимости сначала активировать книгу или ячейки Excel.
  • Таким образом, ниже приведен код для выполнения этой задачи.

Sub OpenWorkbook ()
‘Открыть книгу
‘Метод открытия требует ссылки на полный путь к файлу.
Workbooks.Open «C: Users username Documents New Data.xlsx»

‘ Метод открытия имеет дополнительные параметры
‘Workbooks.Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

Sub CloseWorkbook ()
‘Закройте книгу
Workbooks («New Data.xlsx»). Close SaveChanges: = True
‘Метод Close имеет дополнительные параметры
‘ Workbooks.Close (SaveChanges, Filename, RouteWorkbook)

Рекомендуемое решение: средство восстановления и восстановления MS Excel

Когда вы выполняете свою работу в MS Excel и по ошибке или случайно делаете это не сохранять данные книги, иначе ваш рабочий лист будет удален, тогда у нас есть для вас профессиональный инструмент восстановления, например MS Excel Repair & Recovery Tool .

С С помощью этого инструмента вы также можете легко восстановить все потерянные данные или поврежденные файлы Excel. Это очень полезное программное обеспечение, позволяющее с легкостью возвращать все типы файлов MS Excel .

Как скопировать таблицу в Excel

Пользователям, работающим с офисным пакетом MS Excel, требуется создавать дубликаты таблиц. Поэт.

  • копировать объект по умолчанию;
  • копировать значения;
  • копировать таблицу с сохранением ширины столбца;
  • копировать лист.

  • Выделить диапазон, необходимый для копирования.
  • Скопировать область понравившимся способом: кликнуть правой кнопкой мыши (ПКМ) по выделенной области и выбрать опцию «Копировать» или нажать CTRL+C, или активировать пиктограмму на панели инструментов в блоке «Буфер обмена» (вкладка «Главная»).
  • Открыть другой лист или ту область, где будет размещаться дубликат.
  • Активировать клетку, которая станет верхней левой ячейкой новой таблицы.
  • Вставить объект одним из способов: через контекстное меню (ПКМ – Вставить) или CTRL+V, или нажатием на пиктограмму «Вставить» на панели инструментов на вкладке «Главная».
  1. Выделить диапазон, необходимый для копирования.
  2. Скопировать область удобным способом.
  3. Открыть другой лист или ту область, где будет размещаться дубликат.
  4. Активировать клетку, которая станет верхней левой ячейкой новой таблицы.
  5. Вставить объект удобным способом.
  6. Раскрыть пиктограмму «Вставить».
  7. Установить переключатель на опцию «Только значения».
  • Вставленный объект лишается исходных форматов, т.е. на экране отображаются только значения. Если пользователю необходимо сохранить исходное форматирование и указать значения, то нужно активировать опцию «Значение и форматы оригинала».
  • Подобные опции отображаются в контекстном меню, пункте «Специальная вставка».
  • Если необходимо вставить только значения и сохранить форматирование числовых данных, то пользователь выбирает опцию «Значения и форматы чисел». В таком случае форматирование таблицы не сохраняется. На экране отображается значения и формат числовой информации.
  1. Выполнить пункты 1-6 из алгоритма «Копирование значений».
  2. При раскрытии пиктограммы вставки выбрать опцию «Сохранить ширину столбцов».

Источник

Понравилась статья? Поделить с друзьями:
  • Макрос excel замена текста в ячейках
  • Макрос excel для запуска файла
  • Макрос excel заливка ячеек цветом
  • Макрос excel для заполнения документа word
  • Макрос excel закрыть файл без сохранения