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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование из одной ячейки в другую согласно дате - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование из одной ячейки в другую согласно дате (Макросы Sub)
Копирование из одной ячейки в другую согласно дате
Bugizavr Дата: Вторник, 17.12.2013, 18:38 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Доброго всем вечера!

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

Сейчас макрос копирует вместе с формулами все что находится в желтом столбце и вставляет столбец согласно текущей дате.

Заранее огромное спасибо!
К сообщению приложен файл: 6056467.xls (35.0 Kb)


Сообщение отредактировал Bugizavr - Вторник, 17.12.2013, 18:39
 
Ответить
СообщениеДоброго всем вечера!

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

Сейчас макрос копирует вместе с формулами все что находится в желтом столбце и вставляет столбец согласно текущей дате.

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

Автор - Bugizavr
Дата добавления - 17.12.2013 в 18:38
SkyPro Дата: Вторник, 17.12.2013, 18:45 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
только значения

Это:[vba]
Код
Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Cells(5, rngDate.Column)
[/vba]Заменить на это:[vba]
Код
Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
[/vba]
Или на это:[vba]
Код
Cells(5, rngDate.Column).Value = Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Value
[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Вторник, 17.12.2013, 18:47
 
Ответить
Сообщение
только значения

Это:[vba]
Код
Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Cells(5, rngDate.Column)
[/vba]Заменить на это:[vba]
Код
Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
[/vba]
Или на это:[vba]
Код
Cells(5, rngDate.Column).Value = Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Value
[/vba]

Автор - SkyPro
Дата добавления - 17.12.2013 в 18:45
Bugizavr Дата: Вторник, 17.12.2013, 21:00 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Большое спасибо! Работает!
А как сделать так чтобы этот макрос работал на нескольких листах и делал тоже самое но по нажатию одной кнопки(чтобы не размещать на каждом листе по кнопке)?
 
Ответить
СообщениеБольшое спасибо! Работает!
А как сделать так чтобы этот макрос работал на нескольких листах и делал тоже самое но по нажатию одной кнопки(чтобы не размещать на каждом листе по кнопке)?

Автор - Bugizavr
Дата добавления - 17.12.2013 в 21:00
SkyPro Дата: Вторник, 17.12.2013, 21:24 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Делать все в цикле.
[vba]
Код
For i = 1 to thisworkbook.sheets.count
'sheets(i).cells...  и ваши действия на листе
next
[/vba]


skypro1111@gmail.com
 
Ответить
СообщениеДелать все в цикле.
[vba]
Код
For i = 1 to thisworkbook.sheets.count
'sheets(i).cells...  и ваши действия на листе
next
[/vba]

Автор - SkyPro
Дата добавления - 17.12.2013 в 21:24
Bugizavr Дата: Среда, 18.12.2013, 09:07 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
А можно чуть поподробнее pray , я только начинаю все понимать)
Вот что у меня:

[vba]
Код
Sub CopyData()

Dim lc As Integer
Dim rngDate As Range

lc = Cells(4, Columns.Count).End(xlToLeft).Column
Set rngDate = Range("C4", Cells(4, lc)).Find(Day(Now))
If Not rngDate Is Nothing Then
Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
End If

End Sub
[/vba]


Сообщение отредактировал Serge_007 - Среда, 18.12.2013, 09:26
 
Ответить
СообщениеА можно чуть поподробнее pray , я только начинаю все понимать)
Вот что у меня:

[vba]
Код
Sub CopyData()

Dim lc As Integer
Dim rngDate As Range

lc = Cells(4, Columns.Count).End(xlToLeft).Column
Set rngDate = Range("C4", Cells(4, lc)).Find(Day(Now))
If Not rngDate Is Nothing Then
Range("B5:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
End If

End Sub
[/vba]

Автор - Bugizavr
Дата добавления - 18.12.2013 в 09:07
SkyPro Дата: Среда, 18.12.2013, 11:27 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub CopyData()

Dim lc As Integer, i&
Dim rngDate As Range
For i = 1 to thisworkbook.sheets.count
With sheets(i)
lc = .Cells(4, .Columns.Count).End(xlToLeft).Column
Set rngDate = .Range("C4", .Cells(4, lc)).Find(Day(Now))
If Not rngDate Is Nothing Then
.Range("B5:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy
.Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
End If
end with
next

End Sub
[/vba]
Делать все в цикле.


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Sub CopyData()

Dim lc As Integer, i&
Dim rngDate As Range
For i = 1 to thisworkbook.sheets.count
With sheets(i)
lc = .Cells(4, .Columns.Count).End(xlToLeft).Column
Set rngDate = .Range("C4", .Cells(4, lc)).Find(Day(Now))
If Not rngDate Is Nothing Then
.Range("B5:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy
.Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
End If
end with
next

End Sub
[/vba]
Делать все в цикле.

Автор - SkyPro
Дата добавления - 18.12.2013 в 11:27
Bugizavr Дата: Пятница, 20.12.2013, 11:20 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
SkyPro, Добрый день!

Протестировал на следующий день, и почему то переносит не согласно текущей дате, а просто через один столбец вне зависимости от даты(
 
Ответить
СообщениеSkyPro, Добрый день!

Протестировал на следующий день, и почему то переносит не согласно текущей дате, а просто через один столбец вне зависимости от даты(

Автор - Bugizavr
Дата добавления - 20.12.2013 в 11:20
SkyPro Дата: Пятница, 20.12.2013, 11:26 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub CopyData()
Dim lc As Integer, i&
Dim rngDate As Range
     For i = 1 To ThisWorkbook.Sheets.Count
         With Sheets(i)
         lc = .Cells(4, .Columns.Count).End(xlToLeft).Column
         Set rngDate = .Range("C4", .Cells(4, lc)).Find(Date)
             If Not rngDate Is Nothing Then
                 .Range("B5:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy
                 .Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
             End If
         End With
     Next
End Sub
[/vba]


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Sub CopyData()
Dim lc As Integer, i&
Dim rngDate As Range
     For i = 1 To ThisWorkbook.Sheets.Count
         With Sheets(i)
         lc = .Cells(4, .Columns.Count).End(xlToLeft).Column
         Set rngDate = .Range("C4", .Cells(4, lc)).Find(Date)
             If Not rngDate Is Nothing Then
                 .Range("B5:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy
                 .Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
             End If
         End With
     Next
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 20.12.2013 в 11:26
Bugizavr Дата: Пятница, 20.12.2013, 11:45 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
SkyPro, большое спасибо!

А для общего развития, сейчас прописано применять на каждой странице макрос, а как сделать чтобы применять только на определенных страницах с разными названиями?
 
Ответить
СообщениеSkyPro, большое спасибо!

А для общего развития, сейчас прописано применять на каждой странице макрос, а как сделать чтобы применять только на определенных страницах с разными названиями?

Автор - Bugizavr
Дата добавления - 20.12.2013 в 11:45
Bugizavr Дата: Понедельник, 23.12.2013, 14:17 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Еще раз добрый день!

Как же мне все таки прописать так, чтобы макрос работал только на определенных листах, например на первом и третьем. Код макроса выше через одно сообщение.

Помоги, заранее спасибо!
 
Ответить
СообщениеЕще раз добрый день!

Как же мне все таки прописать так, чтобы макрос работал только на определенных листах, например на первом и третьем. Код макроса выше через одно сообщение.

Помоги, заранее спасибо!

Автор - Bugizavr
Дата добавления - 23.12.2013 в 14:17
SkyPro Дата: Понедельник, 23.12.2013, 14:39 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub CopyData()
Dim lc As Integer, i&
Dim rngDate As Range
     For i = 1 To ThisWorkbook.Sheets.Count
if i = 1 or i = 3 then 'вот тут через "or" можно добавить номера листов.
         With Sheets(i)
         lc = .Cells(4, .Columns.Count).End(xlToLeft).Column
         Set rngDate = .Range("C4", .Cells(4, lc)).Find(Date)
             If Not rngDate Is Nothing Then
                 .Range("B5:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy
                 .Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
             End If
         End With
end if
     Next
End Sub
[/vba]


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Sub CopyData()
Dim lc As Integer, i&
Dim rngDate As Range
     For i = 1 To ThisWorkbook.Sheets.Count
if i = 1 or i = 3 then 'вот тут через "or" можно добавить номера листов.
         With Sheets(i)
         lc = .Cells(4, .Columns.Count).End(xlToLeft).Column
         Set rngDate = .Range("C4", .Cells(4, lc)).Find(Date)
             If Not rngDate Is Nothing Then
                 .Range("B5:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy
                 .Cells(5, rngDate.Column).PasteSpecial Paste:=xlValues
             End If
         End With
end if
     Next
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 23.12.2013 в 14:39
Bugizavr Дата: Пятница, 27.12.2013, 13:23 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Добрый день!
Я наверно уже достал Вас)

Но есть еще вопрос, а как сделать так чтобы работало так же, но таблица располагалась как после транспонирования (пример во вложении). Действия те же самые, строка выделенная желтым копируется в строку согласно текущей дате.

Заранее спасибо.
К сообщению приложен файл: _2.xlsm (25.0 Kb)
 
Ответить
СообщениеДобрый день!
Я наверно уже достал Вас)

Но есть еще вопрос, а как сделать так чтобы работало так же, но таблица располагалась как после транспонирования (пример во вложении). Действия те же самые, строка выделенная желтым копируется в строку согласно текущей дате.

Заранее спасибо.

Автор - Bugizavr
Дата добавления - 27.12.2013 в 13:23
SkyPro Дата: Пятница, 27.12.2013, 13:53 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Попробуйте сами решить этот вопрос.
Всего то нужно поменять поиск колонки на поиск строки и вставлять с транспонированием.


skypro1111@gmail.com
 
Ответить
СообщениеПопробуйте сами решить этот вопрос.
Всего то нужно поменять поиск колонки на поиск строки и вставлять с транспонированием.

Автор - SkyPro
Дата добавления - 27.12.2013 в 13:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование из одной ячейки в другую согласно дате (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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