将单个单元格的值列表转换为HTML

我有以下格式的单元格:

键:值| KEY1:数值|键2:值2 |等..

每个单元格中的键的数量将从0到10变化。

我需要将该单元格转换为一个简单的HTML表格,例如:

<table> <tr> <td>Key</td> <td>Value</td> </tr> <tr> <td>Key1</td> <td>Value2</td> </tr> ... etc </table> 

这是可能的使用计算,还是我需要在看一个macros? 一目了然,我没有看到任何旨在使用分隔符分割string的function,所以看起来在计算中会非常麻烦,如果不是不可能的话。 如果可行的话,计算将是优选的。

我相信它可以用一个有很多帮手列的公式来完成,但是会是一个怎样的混乱。 这里有一些VBA可以做你想做的事情。

 Public Function KeyValueToHtml(ByVal sKeyValue As String) As String Dim vaPipe As Variant Dim vaColon As Variant Dim i As Long Dim aReturn() As String vaPipe = Split(sKeyValue, "|") ReDim aReturn(LBound(vaPipe) To UBound(vaPipe)) For i = LBound(vaPipe) To UBound(vaPipe) vaColon = Split(vaPipe(i), ":") aReturn(i) = Tag(Tag(vaColon(0), "td") & vbNewLine & Tag(vaColon(1), "td"), "tr", , True) Next i KeyValueToHtml = Tag(Join(aReturn, vbNewLine), "table", , True) End Function Function Tag(ByVal sValue As String, ByVal sTag As String, _ Optional ByVal sAttr As String = "", Optional ByVal bIndent As Boolean = False) As String Dim sReturn As String If Len(sAttr) > 0 Then sAttr = Space(1) & sAttr End If If bIndent Then sValue = vbTab & Replace(sValue, vbNewLine, vbNewLine & vbTab) sReturn = "<" & sTag & sAttr & ">" & vbNewLine & sValue & vbNewLine & "</" & sTag & ">" Else sReturn = "<" & sTag & sAttr & ">" & sValue & "</" & sTag & ">" End If Tag = sReturn End Function