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

Это формула, которая находится в ячейке на копии клиента = IF("ВНУТРЕННЕЕ ИСПОЛЬЗОВАНИЕ"!H13 = 0, "", "Внутреннее использование"!H13)
Можем ли мы сделать это, и если да, что мне нужно добавить в формулу, чтобы сделать это

Спасибо Кайли

1 ответ1

0

Я не вижу простой способ сделать это. Как говорит MS Excel MVP:

Формулы и функции могут возвращать только результат. Они не могут изменить или скопировать форматирование.

Есть 2 возможных решения вашей проблемы, которые я вижу:

1 Условное форматирование

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

2 VBA скриптинг

Этот пользователь предоставляет некоторые полезные сценарии VBA и инструкции для другого пользователя о том, как именно это сделать, но это не просто и потребует настройки в соответствии с вашими требованиями.

Поместите следующий код в стандартный модуль:

Public Sub CopyFormat(rng As Range)
On Error Resume Next
If rng.Value = "" Then Exit Sub
If Left(rng.Value, 1) = "#" Then
    Ref = Mid(rng.Value, 2, Len(rng.Value) - 1)
    Range(Ref).Copy
    rng.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    rng.Formula = "=" & Ref  'COMMENT OUT IF REFERRED CELL VALUE NOT REQUIRED
    'rng.Value = ""  'ACTIVATE IF REFERRED CELL VALUE NOT REQUIRED
End If
End Sub

Поместите следующий код в подпрограмму события Worksheet_Change каждого листа:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
CopyFormat Target
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Worksheets("Hidden")
On Error Resume Next
Application.EnableEvents = False
    Range(.Range("Z1").Value).Copy
    Range(.Range("Z1").Value).Dependents.Select
Application.EnableEvents = True
If Err = 0 Then
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End If
.Range("Z1") = Target.Address
End With
Application.CutCopyMode = False
End Sub

В вызывающей ячейке введите формулу, но замените «=» знаком решетки «#» (без кавычек):

Вместо формулы для A5, равной = A1, она будет # A1 Вместо формулы для ячейки Листа A1, равной = Sheet1!А1, это будет # Лист1!A1

Его можно использовать для переноса значения и форматирования из ячейки в ячейку на одном листе или между разными листами. Он также будет содержать комментарий от указанной ячейки. Если вы хотите скопировать только форматирование без значения, измените rng.formula = "=" & Ref на Rng.value = ""

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .