Как скопировать значение ячейки в excel а не формулу vba

 

Лина

Пользователь

Сообщений: 223
Регистрация: 03.11.2014

Доброго времени суток уважаемые!

Возникла потребность копирования значений макросом без формул. Прошу помощи в решении вопроса.

Прикрепленные файлы

  • Книга1.xlsm (23.63 КБ)

Изменено: Лина31.03.2017 20:24:10

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Приведите код в порядок, невозможно же читать. И пример не помешает. Хотя.. на форуме миллион примеров копирования значений. Поиском не пробовали?

Я сам — дурнее всякого примера! …

 

Лина

Пользователь

Сообщений: 223
Регистрация: 03.11.2014

Есть похожие вопросы но у меня макрос отличается от тех что я нашла в сети.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#4

31.03.2017 20:30:59

Цитата
Лина написал: у меня макрос отличается…

Было бы удивительно если бы в сети Вы нашли именно свой макрос. Допилите под себя найденое

Согласие есть продукт при полном непротивлении сторон.

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#5

31.03.2017 20:31:10

Так код лучше смотрится? Пробуйте:

Код
Sub Макрос1()
    On Error Resume Next
    With Sheets("заказ фурнитура")
        lr = .Cells(Rows.Count, 2).End(xlUp).Row
        For Each cl In .Range("B24:b" & lr).Cells
            If cl.Value = "" Then
                Sheets("база фурнитуры столы").[B3:AK3].Copy
                cl.PasteSpecial xlPasteValues
                Application.CutCopyMode = False
                Exit Sub
            End If
        Next
    End With
End Sub

Изменено: kuklp31.03.2017 20:42:30

Я сам — дурнее всякого примера! …

 

Лина

Пользователь

Сообщений: 223
Регистрация: 03.11.2014

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Запись адреса диапазона-источника тоже можно упростить, исправил, см. выше.

Я сам — дурнее всякого примера! …

 

Михаил С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#8

01.04.2017 10:23:28

А если так попробовать?

Код
Sub Макрос1()
    Dim Arr()
    With Sheets("база фурнитуры столы")
        Arr = .Range(.Cells(2, 2), .Cells(25, 35)).Value
    End With
    
    With Sheets("заказ фурнитура")
       .Cells(2, 2).Resize(UBound(Arr), UBound(Arr, 2)).Value = Arr
    End With
End Sub

Writing macro for the first time, I have to copy only cell values to another and which I got it working, however, I am not sure, how to copy entire column without specifying range since range may be different every time. Here, I am trying with a range which is working, but I want it to check values of cell for that column and until it finds a value copy/paste to the another column.

Here is the code I have so far:

Sub CopyingCellValues()

Range("E2:E7").Copy
Range("C2:C7").PasteSpecial xlPasteValues

End Sub

Thanks.

Community's user avatar

asked Jan 10, 2016 at 5:52

Udaan's user avatar

Simple Columns copy will be…

Sheets("Sheet Name").Columns(1).Copy Destination:=Sheets("Sheet Name").Columns(2)

Helpful info at MSDN on Getting Started with VBA in Excel 2010


Edit:

With out the formula, Try

Sub CopyingCellValues()
    Range("E:E").Value = _
    Range("C:C").Value
End Sub

Sub ValueToValue()
    [E:E].Value = [C:C].Value
End Sub

answered Jan 10, 2016 at 6:01

0m3r's user avatar

0m3r0m3r

12.2k15 gold badges33 silver badges70 bronze badges

2

0 / 0 / 0

Регистрация: 01.09.2012

Сообщений: 10

1

Копирование значения ячейки, а не формулы

07.09.2012, 10:53. Показов 18368. Ответов 12


Студворк — интернет-сервис помощи студентам

Проблема в следующем, что надо сделать с ячейкой excel чтоб при копировании копировалось значение а не формула и наоборот. Специальная вставка не поможет!! Копирование происходит по нажатию кнопки из одного документа в другой, в ячейке прописано «=сегодня()» при копировании мне нужно только чистую дату но не формулу. А так как этот вопрос я видел уже много раз то хотелось бы узнать как сделать и наоборот.



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

07.09.2012, 11:41

2

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

Специальная вставка не поможет!!

Поможет. Но проще присвоить значение:

Visual Basic
1
MyCell2.Value = MyCell1.Value



1



dapengt6000

0 / 0 / 0

Регистрация: 01.09.2012

Сообщений: 10

07.09.2012, 15:10

 [ТС]

3

Visual Basic
1
2
3
4
5
6
Sub СТЕЛАЖ7_Кнопка4_Щелчок()
 With Workbooks("ПРОДАНО.xlsx").Sheets(1)
        [A:A].ColumnDifferences(Comparison:=[a1]).EntireRow.Copy .Rows(.Cells(Rows.Count, 2).End(xlUp).Row + 1)
        .[A:A].ClearContents
         End With
    End Sub

это мой код копирования в другой документ, куда вписать то что мне порекомендовали я не понимаю.



0



Busine2012

1300 / 402 / 22

Регистрация: 21.10.2011

Сообщений: 1,285

07.09.2012, 16:18

4

Visual Basic
1
2
3
4
5
Sub Procedure_2()
 
    Rows(1).Value = Range("A1").EntireRow.Value
 
End Sub



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

07.09.2012, 17:00

5

Попробуйте

Visual Basic
1
2
3
4
5
6
7
8
Sub СТЕЛАЖ7_Кнопка4_Щелчок()
 With Workbooks("ПРОДАНО.xlsx").Sheets(1)
        [A:A].ColumnDifferences(Comparison:=[a1]).EntireRow.Copy
        .Rows(.Cells(Rows.Count, 2).End(xlUp).Row + 1).pastespecial xlpastevalues
        application.cutcopymode=false
        .[A:A].ClearContents
         End With
    End Sub



1



0 / 0 / 0

Регистрация: 01.09.2012

Сообщений: 10

07.09.2012, 18:03

 [ТС]

6

этот код работает нормально, но при копировании даты она получается формата 39697, а не 07,09,12 и когда я меняю ячейку на дата то получается 06.09.2008 как теперь с этим бороться?



0



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

34708 / 19229 / 4040

Регистрация: 12.02.2012

Сообщений: 32,197

Записей в блоге: 13

07.09.2012, 18:27

7

Чтобы Excel не преобразовывал дату неподобающим образом, пиши:

Visual Basic
1
MyCell.Value="'" & new_val  ' приклей в начало апостроф (он не войдет в значение)



1



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

07.09.2012, 18:46

8

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

этот код работает нормально, но при копировании даты она получается формата 39697, а не 07,09,12 и когда я меняю ячейку на дата то получается 06.09.2008 как теперь с этим бороться?

Visual Basic
1
.pastespecial xlPasteValuesAndNumberFormats



2



693 / 99 / 10

Регистрация: 25.06.2011

Сообщений: 718

08.09.2012, 00:52

9

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

‘ приклей в начало апостроф (он не войдет в значение)

а что именно апостроф даст?



0



Модератор

Эксперт функциональных языков программированияЭксперт Python

34708 / 19229 / 4040

Регистрация: 12.02.2012

Сообщений: 32,197

Записей в блоге: 13

08.09.2012, 01:04

10

Отменяет автоформатирование. Попробуй ввести в ячейку «01.01» — получишь 01 янв. А если вводить «‘01.01» — то замены не будет.



1



0 / 0 / 0

Регистрация: 01.09.2012

Сообщений: 10

08.09.2012, 15:33

 [ТС]

11

если я ставлю апостроф то формула не работает

Добавлено через 13 минут
вот что интересно дата 08.09.2012 в общем режиме 39698 формат файла xlsm
в другом документе дата 08.09.2012 в общем режиме 41160 формат файла xlsx



0



Казанский

08.09.2012, 19:19

Не по теме:

dapengt6000, сообщение #8 видели?



1



0 / 0 / 0

Регистрация: 01.09.2012

Сообщений: 10

10.09.2012, 09:41

 [ТС]

13

решил проблему изменив формулу даты =СЕГОДНЯ()+1462 при копировании по коду КАЗАНСКОГО получается сегодняшний день. большое всем спасибо!



0



Копирование только значений, без формул

julia5555

Дата: Среда, 21.03.2018, 09:15 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

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


Excel 2013

Здравствуйте! не получается оптимизировать макрос чтобы копировал только значения
Сначала я копирую определенный лист из другой книги

[vba]

Код

Sub CombineWorkbooks()
Dim filestoopen
Dim x As Integer
Application.ScreenUpdating = False
filestoopen = Application.GetOpenFilename(filefilter:=»All files(*.*),*.*», MultiSelect:=True, Title:=»Files to Merge»)
If TypeName(filestoopen) = «Boolean» Then
MsgBox «Файл не выбран»
Exit Sub
End If

x = 1
While x <= UBound(filestoopen)
Set importWB = Workbooks.Open(Filename:=filestoopen(x))
Sheets(«Свод»).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
importWB.Close savechanges:=False
x = x + 1
Wend
Application.ScreenUpdating = True

End Sub

[/vba]

Затем я на новом листе собираю свод из текущих листов, все копируется но с формулами

[vba]

Код

Sub www()
    Dim ws As Worksheet, l&
    With Sheets(«Svod»)
        .UsedRange.Offset(9).ClearContents
        For Each ws In Worksheets
            If Not ws.Name = «Svod» Then
                     l = .Cells.Find(«*», [a20], xlValues, 1, 1, 2).Row + 1
                ws.UsedRange.Offset(9).Copy .Range(«a» & l)
                        End If
        Next
    End With
End Sub

[/vba]

Как в свод скопировать только значения?
Спасибо

 

Ответить

Roman777

Дата: Среда, 21.03.2018, 09:53 |
Сообщение № 2

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

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

Сообщений: 980


Репутация:

127

±

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


Excel 2007, Excel 2013

Используйте [vba][/vba] :msdn


Много чего не знаю!!!!

Сообщение отредактировал Roman777Среда, 21.03.2018, 09:54

 

Ответить

julia5555

Дата: Среда, 21.03.2018, 11:50 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

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


Excel 2013

Используйте
.PasteSpecial
:msdn

да да я знаю, но не получается, не могу верно прописать строку, сразу в ошибку

 

Ответить

Mikael

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

Группа: Пользователи

Ранг: Участник

Сообщений: 80


Репутация:

31

±

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


Excel 2010

julia5555, добрый день!
А так пробовали?
[vba]

Код

Sub www()
    Dim ws As Worksheet, l&
    With Sheets(«Svod»)
        .UsedRange.Offset(9).ClearContents
        For Each ws In Worksheets
            If Not ws.Name = «Svod» Then
                l = .Cells.Find(«*», [a20], xlValues, 1, 1, 2).Row + 1
                ws.UsedRange.Offset(9).Copy
                .Range(«a» & l).PasteSpecial xlPasteValues
                Application.CutCopyMode = 0
            End If
        Next
    End With
End Sub

[/vba]

 

Ответить

julia5555

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

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

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


Excel 2013

julia5555, добрый день!А так пробовали?

не выходит, прикрепляю файл
[moder]Не нужно цитировать весь пост целиком — это нарушение правил.[/moder]

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

4688776.xlsm
(75.1 Kb)

 

Ответить

Mikael

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

Группа: Пользователи

Ранг: Участник

Сообщений: 80


Репутация:

31

±

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


Excel 2010

julia5555,
Попробуйте так:
[vba]

Код

Sub www_Mika()
    Dim ws As Worksheet, l&, aTmp
    With Sheets(«Svod»)
        .UsedRange.Offset(9).ClearContents
        For Each ws In Worksheets
            If Not ws.Name = «Svod» Then
                l = .Cells.Find(«*», [a20], xlValues, 1, 1, 2).Row + 1
                aTmp = ws.UsedRange.Offset(9).Value
                .Range(«a» & l).Resize(UBound(aTmp), UBound(aTmp, 2)).Value = aTmp
            End If
        Next
    End With
End Sub

[/vba]

UPD:
В Вашем файле проблема в 13 строке (17 на листе Svod) — уберите объединение ячеек

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

1416920.xlsm
(73.9 Kb)

Сообщение отредактировал MikaelСреда, 21.03.2018, 13:40

 

Ответить

julia5555

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

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

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


Excel 2013

julia5555,Попробуйте так:

дааа, спасибо большое!
Не очень поняла почему мы пользовались[vba]

Код

.Range(«a» & l).Resize(UBound(aTmp), UBound(aTmp, 2)).Value = aTmp

[/vba] а не [vba]

Код

Range(«a» & l).PasteSpecial xlPasteValues

[/vba] щас буду читать, так как новичек в этой теме
Спасибо еще раз

 

Ответить

Mikael

Дата: Среда, 21.03.2018, 14:33 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 80


Репутация:

31

±

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


Excel 2010

Не очень поняла почему мы пользовались

это решение через массив, я загружаю все данные с листа ws сначала в массив, а потом выгружаю этот массив на лист Svod. Этот метод куда быстрее копирования-вставки.

Чтобы использовать .PasteSpecial:

В Вашем файле проблема в 13 строке (17 на листе Svod) — уберите объединение ячеек

 

Ответить

julia5555

Дата: Среда, 28.03.2018, 06:54 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

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


Excel 2013

Спасибо большое, разобралась и все работает

 

Ответить

Копировать и вставить значения, а не формулы

Вопрос:

Написание макроса в первый раз, мне нужно скопировать только значения ячеек в другой, и я получил его работу, однако я не уверен, как скопировать весь столбец без указания диапазона, поскольку диапазон может быть различным каждый раз. Здесь я пытаюсь работать с диапазоном, но я хочу, чтобы он проверял значения ячейки для этого столбца и пока не нашел значение copy/paste в другой столбец.

Вот код, который у меня есть до сих пор:

Sub CopyingCellValues()

Range("E2:E7").Copy
Range("C2:C7").PasteSpecial xlPasteValues

End Sub

Спасибо.

Лучший ответ:

Простая копия столбцов будет…

Sheets("Sheet Name").Columns(1).Copy Destination:=Sheets("Sheet Name").Columns(2)

Полезная информация в MSDN по Начало работы с VBA в Excel 2010


Edit:

Из формулы, Try

Sub CopyingCellValues()
    Range("E:E").Value = _
    Range("C:C").Value
End Sub

Sub ValueToValue()
    [E:E].Value = [C:C].Value
End Sub

Формулировка задачи:

Проблема в следующем, что надо сделать с ячейкой excel чтоб при копировании копировалось значение а не формула и наоборот. Специальная вставка не поможет!! Копирование происходит по нажатию кнопки из одного документа в другой, в ячейке прописано «=сегодня()» при копировании мне нужно только чистую дату но не формулу. А так как этот вопрос я видел уже много раз то хотелось бы узнать как сделать и наоборот.

Код к задаче: «Копирование значения ячейки, а не формулы»

textual

.pastespecial xlPasteValuesAndNumberFormats

Полезно ли:

9   голосов , оценка 4.333 из 5

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как скопировать защищенный файл excel
  • Как скопировать лист в excel на другой лист без изменений в другую книгу
  • Как скопировать защищенный лист в excel на другой лист
  • Как скопировать лист в excel на другой лист без изменений в другой файл
  • Как скопировать защищенную ячейку в excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии