excel或者vba,怎样将工作簿内所有橙色单元格公式转换为数值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel或者vba,怎样将工作簿内所有橙色单元格公式转换为数值?相关的知识,希望对你有一定的参考价值。

手贱用indirect做了个报表上期引用,工作簿里搞了六千多个链接,忘了这个东西必须把引用源打开,现在已经把所有带引用公式的单元格标了橙色,求解什么方法可以把单元格转换为数值呢

我写了一个通用工具,里面有三个转换公式为数值的功能:全部去除、保留本表引用、保留本工作簿引用的,我的工具界面如下:


三段代码都粘贴如下,供参考,我觉得第三项菜单的代码能满足帖子需求。

第一项,去除所有公式,代码一行:

ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value

第二、三项目代码如下图:

文本粘贴如下,可能会乱:

Sub Y把全表公式转换为数值() \'保留本表引用公式
Dim cell As Range, Rng As Range
On Error Resume Next
Set Rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Rng Is Nothing Then
MsgBox "本表没有公式。", , appTitle
Exit Sub
End If
For Each cell In Rng.Cells
If InStr(cell.Formula, "!") Then cell.Value = cell.Value
Next cell
MsgBox "本表上引用其它表的所有公式已转换为数值。", , appTitle
End Sub

Sub Y把全表公式转换为数值2() \'保留本工作薄内部引用公式
Dim cell As Range, Rng As Range
On Error Resume Next
Set Rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Rng Is Nothing Then
MsgBox "本表没有公式。", , appTitle
Exit Sub
End If
For Each cell In Rng.Cells
If InStr(cell.Formula, "[") Then cell.Value = cell.Value
Next cell
MsgBox "本表上引用其它工作薄文件的所有公式已转换为数值。", , appTitle
End Sub


追问

非常感谢您老师,就是能不能再讲下,如果要将本工作簿内所有工作簿引用其他工作簿文件的公式转数值,要修改哪一行代码呢,我这边是好多工作表,虽然跑的慢,但是亲测您的代码管用

追答

可以另外写一个宏:
sub 宏1()
Dim st as worksheet
Application.Calculation = xlCalculationManual
for each st in worksheets
st.activate
Y把全表公式转换为数值2
next st

end sub

参考技术A

直接菜单栏数据---编辑链接选择所有链接断开就可以了,

如果是 文件内  工作表 引用的公式  才需要用到 VBA

对于其他文件的 公式引用 链接 , 断开链接 是最快 最简单的方法

参考技术B 需要把你的原始excel表格发我下,了解清楚情况才能对症下药

Excel:将单元格的颜色设置为另一个

【中文标题】Excel:将单元格的颜色设置为另一个【英文标题】:Excel: setting the color of a cell to another 【发布时间】:2012-11-01 20:57:48 【问题描述】:

如何确定一个单元格的颜色等于另一个,例如: A4是然后C2是青色青色。 A2 则 C2 橙色颜色为橙色。

【问题讨论】:

您无法使用公式更改单元格的颜色。您可以通过编写自己的 VBA 函数来获取另一个单元格的颜色,但如果您想更改颜色,则必须使用不能像函数一样调用的宏。函数所能做的就是返回一个值,它不能更改任何工作表属性,例如格式。 【参考方案1】:

没有 excel 公式可以让您获得单元格的颜色,也没有一个可以设置不同单元格的颜色。

但是,您可以创建一个函数来获取特定单元格的颜色 - 或者,就像在我的示例中一样,获取函数调用单元格的颜色:

Public Function GetColor()
    Dim rng As Range

    If TypeName(Application.Caller) = "Range" Then
        Set rng = Application.Caller
    End If
    GetColor = rng.Cells.Interior.Color
End Function

现在你可能会想,好吧,然后我修改它,只是为了设置颜色。但不 - 不是那样工作的。要更改单元格颜色,您必须使用 Worksheet_Change 事件并将每个单元格设置为其中的长值作为颜色。

Target.Interior.Color = Target.Value

当使用Worksheet_Change 时,会是这样。

您当然也可以使用ColorIndex - 只需进行相应调整即可。

【讨论】:

【参考方案2】:

这里有一些 C# 代码,也许对你有帮助:

xlSheet.Range["A10", "A10"].Interior.Color = ColorTranslator.ToOle(System.Drawing.Color.Cyan);
xlSheet.Range["C10", "C10"].Interior.Color = xlSheet.Range["A10", "A10"].Interior.Color;

【讨论】:

以上是关于excel或者vba,怎样将工作簿内所有橙色单元格公式转换为数值?的主要内容,如果未能解决你的问题,请参考以下文章

vba怎样把一个单元格中的值赋给另一个单元格

EXCEL单元格批量插入不同批注

Excel中怎样通过vba快速标注哪些单元格的数据发生变化?

求vba模块,excel把所有日期单元格转换为yyyy-mm-dd文本

访问 VBA 以拆分 Excel 中的所有合并单元格

在Excel中,怎样直接引用另一个表格的资料