早年PJBlog的回复是嵌在评论里的,现在想分离用户评论和博主回复。想用Excel来搞定,核心就是IFERROR函数配合FIND、MID这些文本函数。比如先用公式把 blockquote 前后的内容分开,抓到用户评论和博主回复。再用个公式精准提取回复的纯文本,把那些多余的HTML标签甩掉。

最近处理博客评论中留存的历史问题,早年使用PJBlog,当时的评论没有对应回复逻辑,后来的版本中虽然加入了回复功能,但是是在原评论中插入一段特殊标记的内容,实际上数据库里面是一条评论内容。

转到WordPress之后,它的评论回复是独立的。于是想着将原来回复的评论单独抽出来变为独立回复的评论。幸好原来有一些特殊标记,可以相对方便的分离出来内容。

这个时候就用到IFERROR函数了,它是一个自定义公式错误时的提示函数,不过这里我们可以用来查找我们想要的内容。

举例:下面是评论内容字段中存储的数据。

我是最初的用户发表的评论内容。 br blockquote p William 于 2010-05-08 02:03 PM 回复 /p br/ 这个是博主回复的评论内容 /blockquote

其中 br 标签不一定每行都存在,但是 blockquote 一定有,所以就用它作为我们的定位。

假如评论数据在Excel的B列。

=IFERROR(LEFT(B1,FIND(" blockquote ",B1)-1),B1)

上面的函数就能获取 blockquote 之前的内容。我们把它放到C列:

我是最初的用户发表的评论内容。 br

这个就是用户发表的评论内容。

=IFERROR(MID(B1,FIND(" blockquote ",B1)+12,FIND(" /blockquote ",B1)-FIND(" blockquote ",B1)-12),"")//其中的 12 是 blockquote 有12个字符,这个需要根据你的字符数进行调整

上面的函数就能获取 blockquote 和 /blockquote 之间的内容,我们把它放到D列:

p William 于 2010-05-08 02:03 PM 回复 /p br/ 这个是博主回复的评论内容

假如我们只想提取 博主的回复内容

=IFERROR(TRIM(MID(D1,FIND(" /p ",D1)+4,LEN(D1))),"")//其中的 4 是 /p 有4个字符,这个需要根据你的字符数进行调整

这个我们就得到E列:

br/ 这个是博主回复的评论内容

因为br 标签不一定每行都在,想去掉直接替换为空就行。

这样我们就通过IFERROR函数完全分离了用户评论和博主回复的内容了,还是非常方便的。