1

次の形式のセルがあります。

キー:値|キー1:値1|キー2:値2|など...

各セルのキーの数は 0 から 10 まで変化します。

そのセルを単純な HTML テーブルに変換する必要があります。次に例を示します。

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

これは計算を使用することで可能ですか、それともマクロを見る必要がありますか? 一見したところ、区切り記号を使用して文字列を分割するように設計された関数は見当たりませんでした。そのため、不可能ではないにしても、計算で実行するのはかなり面倒に見えます。実用的であれば、これについては計算が望ましいでしょう。

4

1 に答える 1

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
于 2013-10-04T23:36:28.317 に答える