0

问题

我有一个 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 样式表

需要什么

一些开箱即用的,保持简单的想法!

4

2 回答 2

1

我不确定这个问题是否是一个级别 - 您不想编写 VBA 代码,因为“它违背了 Excel 的精神”?VBA 是在 Excel 5.0 中引入的,在此之前有一种过程宏语言。自动化一直是 Excel 受欢迎的组成部分(也是之前 Lotus 1-2-3 兴起的主要原因)。

粗体和斜体可以通过条件格式进行操作。

对于字体大小,是的,您需要编写一些代码。也许一些样本数据或数据类型(文本、整数、实数……)的指示会引发一些建议。

于 2012-12-27T22:29:19.397 回答
1

可以分别保存数据和格式信息:

Sheet 1: 数据;
Sheet 2: 描述工作表 1 上相应单元格的单元格格式的函数(导致 bgcolor="#ff00ff", font size="3" 等);
Sheet 3: 数据和格式合并,给出 XSL。

唯一需要的 VBA 是为工作表 2 编写一个 UDF,为工作表 3 编写另一个 UDF。

于 2012-12-28T22:58:01.910 回答