【问题标题】:Break HTML tags and text of a single cell in multiple rows在多行中拆分单个单元格的 HTML 标记和文本
【发布时间】:2019-09-24 20:02:39
【问题描述】:

我试图想出一个函数,将几个选定单元格的每个 HTML 标记和文本字符串返回到新工作表的各个行中,以便我可以编辑文本行,然后将所有内容粘贴回选定的单元格。

我有这段代码,但不幸的是,它对我的​​任务来说太基础了。

Sub SplitCell ()
    Dim txt As String
    Dim i As Integer
    Dim fullname As Variant

    txt = ActiveCell.Value
    fullname = Split(txt, "<p>; <b>; <i>; </p>; </b>; </i>;")
        For i = 0 To UBound(fullname)
        Cells(1, i + 1).Value = fullname(i)
    Next i
End Sub

这是一个示例工作表的链接,可让您更好地了解我想要实现的目标。

样本表

预期结果

谢谢,

【问题讨论】:

  • 发生了什么不正确的事情?
  • 如果你正在寻找任何基本的,你可以从i = 1 to len()循环,当你找到想要的分割点时,从最后一个分割点到当前的i并追加它到一个预先确定的数组。 application.transpose 数组回到您的工作表(可能需要将数组重新调整为您的最大内容)。
  • 嗨,内森,感谢您的回答。好吧,我的代码只是根据几个有限的标签拆分选定的单元格,我需要它与任何 HTML 标签一起工作(所以 之间的任何东西。此外,我希望它实际上在报告表中列出这些标签,就像所有剩下的文本,而不是像函数那样删除它们。我已经包含了一个我想要实现的示例文件的链接。谢谢
  • @Marrone 在少数情况下,有人会从该站点下载链接。请编辑您的帖子以提供数据的屏幕截图或摘录。
  • 谢谢西里尔,我刚刚编辑了我的帖子。 :)

标签: excel vba split


【解决方案1】:

会根据"&lt;" 不适合您的需要进行拆分,然后根据结果的"&gt;" 进行拆分,类似这样。

Sub test()

    Dim s As String
    Dim s1() As String
    Dim v As Variant

    s = "<td>test one</td><b>test two</b>"

    s1 = Split(s, "<")

    For Each v In s1        
        If Len(v) > 0 And Right(v, 1) <> ">" Then        
            Debug.Print Split(v, ">")(1)        
        End If        
    Next v        

End Sub

【讨论】:

  • 删除了我的答案,因为这将事情简化为更简单地使用 split(s,"&lt;")
  • 这只是一个基本的方法,不确定它如何在嵌套上工作,比如&lt;table&gt;&lt;tr&gt;&lt;td&gt;test&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多