Страницы: 1
RSS
Копирование свойств исходной ячейки
 
Коллеги! Столкнулся с задачей.

Есть Лист 1, где есть исходные ячейки
Есть Лист 2, который ссылается на данные ячейки (но уже в других строках)
Некоторые ячейки в Листе 1 имеют свойства текста: он жирный

Как сделать так, чтобы на Листе 2 копировалась не только сами ячейки с Лист1, но и их свойства (что ячейка жирная?)
 
S V, ctrl+C  специальная вставка - форматы, а то что вы в файле называете копирование не копирование )
и формулы не умеют переносить формат
Изменено: Mershik - 25.11.2020 14:01:19
Не бойтесь совершенства. Вам его не достичь.
 
Получение данных с другого листа осуществляется именно формулой в текущей задаче.
Получается, без макросов здесь не обойтись :(
Изменено: S V - 25.11.2020 14:04:40
 
S V,да, формулы этого не умеют
Не бойтесь совершенства. Вам его не достичь.
 
Нашел такой код:
Код
Set oXL = CreateObject("Excel.application")
oXL.Visible = True

Set oWB = oXL.Workbooks.Open("FilePath.xlsx")
Set oSheet = oWB.Worksheets("Sheet1")         'Source Sheet in workbook
Set oDestSheet = oWB.Worksheets("Sheet2")       'Destination sheet in workbook

r = oSheet.usedrange.rows.Count
c = oSheet.usedrange.columns.Count

For i = 1 To r
    For j = 1 To c
        If oSheet.Cells(i,j).font.Bold = True Then

            oSheet.cells(i,j).copy
            oDestSheet.Cells(i,j).pastespecial
        End If
    Next
Next

oWB.Close oXL.Quit

Как его адаптировать? Имя листов заменил, но скрипт все равно выдает ошибку на примере текущего файла
 
S V, полный макрос нужно прикладывать у вас часть.
но вопрос зачем использовать формулы если можно сразу копировать значение и его форматирование макросом, приведенная часть макроса это и делает - вопрос ТАК ЧТО НУЖНО?
Код
Sub dsd()
Dim i As Long, lr As Long, sh As Worksheet, sh2 As Worksheet
Application.ScreenUpdating = False
Set sh = Worksheets("Лист1"): Set sh2 = Worksheets("Лист2"):
lr = sh2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To lr
    x = Replace(Replace(sh2.Cells(i, 1).Formula, "=", ""), sh.Name & "!", "")
    sh.Range(x).Copy
    sh2.Cells(i, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
Next i
Application.ScreenUpdating = True
End Sub

Изменено: Mershik - 25.11.2020 15:27:28
Не бойтесь совершенства. Вам его не достичь.
 
Копировать макросом все инфу с 1-го листа на 2-й лист не получится в силу специфики задачи. Она в данном контексте решается именно формулой

Вот откуда взял макрос
ссылка

А нужно именно чтобы макрос скопировал форматирование ячейки в части жирного шрифта со сдвигом строк:
- строка_4 листа 2 соответствует строке_1 листа 1
- строка_5 листа 2 соответствует строке_2 листа 1
и т.д.
Страницы: 1
Наверх