2013-10-04 51 views
1

我有細胞是在格式:變換值的單小區列表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> 

這是可能的,使用計算,還是我需要看一個宏?乍一看,我沒有看到任何旨在使用分隔符分割字符串的函數,所以看起來在計算中會非常麻煩,如果不是不可能的話。如果可行的話,計算將是優選的。

回答

0

我敢肯定,它可以在一個有很多幫手列的公式中完成,但它會是一個混亂。這裏有一些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