我们有一张包含 2 个标签的电子表格,1 个供内部使用,另一个是客户副本。我们将所有成本和说明输入到内部副本中,并将其填充到客户副本中。我的问题是,我想通过粗体文本或下划线突出显示说明中的信息,我可以在内部副本上执行此操作,但它不会反映到客户副本中
这是客户端副本单元格中的公式 =IF('INTERNAL USE'!H13=0," ",'INTERNAL USE'!H13)
我们能够做到这一点吗?如果可以,我需要在公式中添加什么才能做到这一点
谢谢凯莉
答案1
我看不出有什么简单的方法可以做到这一点。MS Excel MVP 说:
公式和函数只能返回结果。它们不能更改或复制格式。
我认为您的问题有两种可能的解决方案:
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。Sheet2 单元格 A1 的公式将不再是 =Sheet1!A1,而是 #Sheet1!A1。
它可用于将值和格式从同一张表上的单元格传递到另一张表上的单元格,或传递到不同表之间的单元格。它还将传递引用单元格的注释。如果您只想复制格式而不复制值,则将 rng.formula = "=" & Ref 更改为 Rng.value = ""