问题
我有一个Excel工作表,其中有一列文本,即数据,并考虑了一些规则,即哪些文本值应使用何种字体和字号进行格式化。
具体示例
单元格A1:"文本">
单元格A2。。(A栏(:文本字符串(从几个单词到几个句子(,可选择使用适用的字体和字体大小进行格式化
单元格B1:"文本类型">
单元格B2。。。(B栏(:单个字符串,如"标题"、"要求"、"注释">
牢记规则:
如果B列中的字符串是"标题",则使A列中的字符字体大小为18
如果B栏中的字符串为"requirement",则将A栏中的字符设置为Calibri 字体
如果B列中的字符串为"note",则将A列中的字符设置为"italic">
约束
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样式表
需要什么
有些跳出框框,保持简单的思维!
可以单独保存数据和格式化信息:
Sheet 1
:数据Sheet 2
:描述第1页上对应单元格的单元格格式的函数(导致bgcolor="#ff00ff"、font size="3"等(Sheet 3
:数据和格式合并,给出XSL。
唯一需要的VBA是为工作表2编写一个UDF,为工作表3编写另一个。
我不确定这个问题是否是一个级别——你不想写VBA代码,因为"这违背了Excel的精神"?VBA是在Excel 5.0中引入的,在此之前还有一种过程宏语言。自动化一直是Excel受欢迎的组成部分(也是Lotus 1-2-3在此之前兴起的主要原因(。
粗体和斜体可以通过条件格式进行操作。
对于字体大小,是的,您需要编写一些代码。也许一些样本数据或数据类型的指示(文本、整数、实数等(会引发一些建议。