如何将字体样式和大小应用于基于内容的Excel工作表文本列?

问题

我有一个Excel工作表,其中有一列文本是数据,有些规则记住了什么样的文本值应该用什么字体和字体大小格式化。

具体例子

单元格A1:“文本”

单元格A2 …(列A):文本string(从几个字到几个句子)可以select使用适用的字体和字号进行格式化

单元格B1:“文本的types”

单元格B2 …(列B):单个string,如“标题”,“要求”,“笔记”

规则:

如果列B中的string是“标题”,则在字段中inputstringA字体大小为18

如果Col.B中的string是“要求”,则在Col.A字体Calibri中制作string

如果Col.B中的string是“note”,则在Col.A中创buildstring样式“italic”

约束

作为电子表格,Excel是关于函数式编程(公式)和并行处理(重新计算)的。 是的,我可以编写程序化的VBA,但是对我来说,这违背了电子表格的精神(即使程序编程如此受欢迎,以至于Excel和前辈已经提供了很长时间)。

除了特殊用途的 VBA 程序编程以外如何做到这一点?

什么似乎没有解决

Excel条件格式化不能解决,因为它明确不允许设置这些特定的单元格属性。

Excel UDF(用户定义函数)不解决,因为它们不影响其他单元格。 正如预期的function。 即使我想制作一个复制未格式化文本但基于值的样式或大小的函数,UDF不会影响“环境” – 只能返回数据。

我在这里发现,我甚至不能将Excel工作表单元格中的VBA代码作为文本,然后将文本评估为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 

有些想法对我来说似乎太难了,但也许有人会说他们不是

  • configurationExcel以允许VBA写入VBA编辑器(VBE),读取数据的工作表列,根据规则计算所需的字体样式和大小,并自动生成VBA程序代码,然后更新数据列的字体样式和大小

  • 导出或保存将Excel文件作为XML,编写一个XSL样式表,按照规则格式化,打开(导入?)XML并告诉Excel使用XSL样式表

需要什么

一些外在的,保持简单的思维!

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

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

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

我不确定这个问题是不是一个水平 – 你不想写VBA代码,因为“这违背了Excel的精神”? VBA是在Excel 5.0中引入的,在那之前有一个程序化的macros语言。 自动化一直是Excel不可或缺的组成部分(也是Lotus 1-2-3崛起的主要原因)。

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

对于字体大小,是的,你需要编写一些代码。 也许一些样本数据或数据types的指示(文本,整数,实数…)将提出一些build议。