问题
我有一个 Excel 工作表,其中包含一列作为数据的文本,并考虑了一些规则,哪些文本值应该用什么字体和字体大小格式化。
具体例子
单元格 A1:“文本”
单元格 A2 .. (Col. A):文本字符串(从几个单词到几个句子)可以选择格式化为适用的字体和字体大小
单元格 B1:“文本类型”
单元格 B2 ...(Col. B):单字字符串,例如“标题”、“要求”、“注释”
牢记规则:
如果 B 列中的字符串是“标题”,则使 A 列中的字符串字体大小为 18
如果 B 列中的字符串是“要求”,则在 A 列字体 Calibri 中创建字符串
如果 B 列中的字符串为“note”,则将 A 列中的字符串设为“斜体”
约束
Excel 作为电子表格,完全是关于函数式编程(公式)和并行处理(重新计算)。是的,我可以编写程序 VBA,但对我来说,它违背了电子表格的精神(尽管程序编程如此流行,以至于 Excel 和前辈已经提供了很长时间)。
问题
除了特殊用途的VBA程序编程之外,关于如何做到这一点的任何想法?
什么似乎没有解决
Excel 条件格式无法解决,因为它明确不允许设置那些特定的单元格属性。
Excel UDF(用户定义函数)不会求解,因为它们不会影响其他单元格。正如预期的功能。即使我想创建一个复制未格式化文本但具有基于值的样式或大小的函数,UDF 也不会影响“环境”——只能返回数据。
我在这里发现,我什至不能将 VBA 代码作为文本放入 Excel 工作表单元格中,然后将文本评估为 VBA - 为我将放入单元格的字体样式和大小 VBA 语句创建一个简单的通用 VBA 程序处理引擎在我的工作表中。
(如果这些负面信息中的任何一个不正确,并且上述任何一个都有效,请纠正我。)
VBA特殊用途的过程式编程示例——有效但尽量避免的方法
Public Sub IterateThroughRangeSetFontStyleSize()
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Set wb = Application.ActiveWorkbook
Set ws = wb.Worksheets("myWorkSheet")
Set rng = ws.Range("b2", "b4")
For Each cell In rng.Cells
If LCase(cell.Text) = "bold" Then cell.Offset(0, -1).Font.Bold = True
If LCase(cell.Text) = "italic" Then cell.Offset(0, -1).Font.Italic = True
If LCase(cell.Text) = "large" Then cell.Offset(0, -1).Font.Size = 18
Next cell
End Sub
一些对我来说似乎太难的想法,但也许有人会说他们不是
配置 Excel 以允许 VBA 写入 VBA 编辑器 (VBE),读取工作表数据列,根据规则计算所需的字体样式和大小,并自动生成 VBA 程序代码,然后更新数据列的字体样式和大小
将 Excel 文件导出或另存为 XML,编写一个按照规则格式化的 XSL 样式表,打开(导入?)XML 并告诉 Excel 使用 XSL 样式表
需要什么
一些开箱即用的,保持简单的想法!