有没有办法在Excel中格式化文本到HTML?

基本上,当我在一个Excel单元格中input文本时,我想要这个(将居中):

重量:10磅
长度:21“
宽度:14“

在另一个单元格中成为这个:

<p align="center"><font size="2" face="Arial"></font><br></p><p align="center"><font size="2" face="Arial">Weight:10lbs<br></font><span style="font-family: Arial; font-size: small;">Length: 21"<br>Width: 14"&nbsp;</span></p>

我感谢任何帮助! 谢谢!

另外两个答案都是非常有效的。 此解决scheme不使用VBA。 除了使用多个SUBSTITUTE实例从模板创build新的文本之外,它与John类似。

假设你的值在A2-C2(这是任意的,由你决定)。

模板$ A $ 1

 <p><br></p> <p align="center"><font size="2" face="Arial"> {0}<br></font><span style="font-size: small;">{1}<br>{2}" </span></p> 

结果文本

 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A$1, "{0}", A2), "{1}", B2), "{2}", C2) 

与使用连接的方法相比,它的优点是可以从根本上改变项目出现在模板中的顺序,而不必更改生成结果的函数。

即使您的模板被更改为下面的模板,使用substitute的相同function也不必更改,如果您的行数较less,则这很方便。

 <div>{2}<table><tr><td>{0}</td><td>{1}</tr></table></div> 

关于什么:

 Cell A1: <p align="center"><font size="2" face="Arial"></font><br></p><p align="center"><font size="2" face="Arial"> Cell B1: Weight:10lbs Cell C1: <br></font><span style="font-family: Arial; font-size: small;"> Cell D1: Length: 21" Cell E1: <br> Cell F1: Width: 14" Cell G1: &nbsp;</span></p> 

而你想要的结果是

 Cell H1: =A1&B1&C1&D1&E1&F1&G1 

重新排列列以方便,拔出字段名称,只是使用测量等…相同的想法。

如果你已经把所有的三个字段放在一个单元格中,那么你可以很容易地将它们分成列:

  • 如果您的数据在A1中,则将位置=SUBSTITUTE(A1, CHAR(10), "|")以获得由B1中的垂直线分隔的数据。
  • 将B1按值粘贴到C1中。
  • 使用Text to Columns工具将C1中的字段分隔为C1和相邻列,使用| 作为分隔符。

您的要求不清楚,这是我有:

 Public Sub Change() Dim a As String a = Range("A1:A1") 'MsgBox a Dim resultCell As Range Set resultCell = Range("A2:A2") Dim splitVals As Variant splitVals = Split(a, Chr(10)) resultCell.Value = "<p align='center'><font size='2' face='Arial'></font><br></p><p align='center'><font size='2' face='Arial'>" & splitVals(0) & "<br></font><span style='font-family: Arial; font-size: small;'>" & splitVals(1) & "<br>" & splitVals(2) & "&nbsp;</span></p>" End Sub 

把你的价值在第一个单元格与Alt +input新行,你会得到低于你的结果。