2017-04-05 167 views
0

我有一个很大的CSV与包含数百行的HTML几列。我需要将某些部分分成新列。例如,一个单元格可以包含:Excel - 从单元格拆分字符串

<style>.some-class{property:value;}</style><div class="title">This is a title</div><div class="description">This is a description></div>

我想标题和描述的内容移动到单独的列,同时删除所有标记。

有没有办法使用公式而不是宏或VBA来做到这一点?

由于

+0

您是否尝试过在'= MID()'函数中使用'FIND()'函数?另外检查'SUBSTITUTE()'函数来替换\删除html的位,如果有帮助的话。 – rayzinnz

+0

谢谢,我已经看过这些,但挑战是我不知道他们会在任何给定单元格中有多少个字符。 FIND返回位置,MID需要您指定字符数。如果有一个文本到列的分隔符可以是一个字符串而不是单个字符,那将是完美的 – Kevmon

回答

1

若要防止超长公式,可能更容易将公式分成两列,并在需要时隐藏列。例如,如果你文本是A列,然后把这些式中的以下细胞: 到B1:

=RIGHT(A1,LEN(A1)-FIND("class=""title"">",A1)-13) 

到C1:

=LEFT(B1,FIND("</div",B1)-1) 

到D1:

=RIGHT(A1,LEN(A1)-FIND("class=""description"">",A1)-19) 

转化为E1:

=LEFT(D1,FIND("</div",D1)-1) 

然后复制\填写下来。

0

对于说明:(输出:这是一个描述)

=REPLACE(REPLACE(REPLACE(F9,FIND("This is a title",F9,1),LEN("This is a title"),""),1,LEN(".some-class{property:value;}"),""),LEN(REPLACE(REPLACE(F9,FIND("Thisis a title",F9,1),LEN("This is a title"),""),1,LEN(".some-class{property:value;}"),"")),1,"") 

对于名称:(输出:这是一个标题)

=REPLACE(REPLACE(REPLACE(F9,FIND("This is a description",F9,1),LEN("This is a description"),""),1,LEN(".some-class{property:value;}"),""),LEN(REPLACE(REPLACE(F9,FIND("This is a description",F9,1),LEN("This is a description"),""),1,LEN(".some-class{property:value;}"),"")),1,"") 

这不是很好的解决方案,但你可以考虑改变里面的字符串到公式来获得你想要的字符串。如果仍然无法找到最佳解决方案,它可以做到(虽然很耗时)。

相关问题