我希望使用excel中的查找和替换功能从类似于以下内容的单元格中删除例句:
text <br>〔「text」text,「text」text〕<br>(1)text「sentence―sentence/sentence」<br>(2)text「sentence―sentence」
句子位于“”括号之间,并且在括号内的某个位置包含―和/字符。
我尝试过「*―*/*」
,但这会删除〔
使用查找和替换工具是否可以定位和删除这些特定的括号?
所需结果:
text <br>〔「text」text,「text」text〕<br>(1)text<br>(2)text「sentence―sentence」
答案 0 :(得分:1)
很长的公式,但是在Excel O365中,您可以使用:
=SUBSTITUTE(CONCAT(FILTERXML("<t><s>"&SUBSTITUTE(CONCAT(IF(MID(A1,SEQUENCE(LEN(A1)),1)="「","</s><s>「",IF(MID(A1,SEQUENCE(LEN(A1)),1)="」","」</s><s>",MID(A1,SEQUENCE(LEN(A1)),1)))),"<br>","|$|")&"</s></t>","//s[not(contains(., '「') and contains(., '―') and contains(., '/') and contains(., '」'))][node()]")),"|$|","<br>")
只要您有权访问CONCAT
,您也可以在Excel 2019中执行此操作,但是您必须将SEQUENCE(LEN(A1))
换成ROW(A$1:INDEX(A:A,LEN(A1)))
答案 1 :(得分:0)
此公式在很多情况下都不起作用,但是,如果该字符串具有与示例中相同的规则,请尝试以下操作:
structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0.608695652173913, 0.323529411764706,
0.129032258064516, 0.176470588235294, 0.125, 0, 0, 0.173913043478261,
0.323529411764706, 0.258064516129032, 0.294117647058824, 0.25,
0, 0, 0.0869565217391304, 0.235294117647059, 0.419354838709677,
0.352941176470588, 0.25, 0, 0, 0.130434782608696, 0.117647058823529,
0.161290322580645, 0.117647058823529, 0.25, 0, 0, 0, 0, 0.032258064516129,
0.0588235294117647, 0.125, 0, 0, 0, 0, 0, 0, 0, 0), class = "table", .Dim = c(7L,
7L), .Dimnames = list(i = c("Aaa", "Aa", "A", "Baa", "Ba", "B",
"Caa"), j = c("Aaa", "Aa", "A", "Baa", "Ba", "B", "Caa")))
解释其工作原理:
=SUBSTITUTE(C5,"「" & INDEX(TRIM(MID(SUBSTITUTE(","&SUBSTITUTE(C5,"」","「"),"「",REPT(" ",99)),(ROW(A1:INDEX(A1:A100,LEN(C5)-LEN(SUBSTITUTE(C5,"」",""))))*2-1)*99,99)),MATCH("*―*/*",TRIM(MID(SUBSTITUTE(","&SUBSTITUTE(C5,"」","「"),"「",REPT(" ",99)),(ROW(A1:INDEX(A1:A100,LEN(C5)-LEN(SUBSTITUTE(C5,"」",""))))*2-1)*99,99)),0)) & "」","")
之间的字符串拆分为一个数组"「 "and "」"
查找字符串位置(请注意,它仅会返回一个值(如果存在),如果您有多个字符串,则可以将match("*―*/*",,0)
替换为match("*―*/*",)
并使用它作为获取匹配字符串的额外列)search ("*―*/*",..)
获取需要替换的字符串(结果)index(array,match("*―*/*",..))
答案 2 :(得分:0)
或者,
在B1中输入公式:
=SUBSTITUTE(A1,"「"&TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("」",A1,FIND("/",A1))),"「",REPT(" ",99)),99)),"")
答案 3 :(得分:0)
您没有标记 [VBA] ,但是如果您不反对,则可以编写一个用户定义函数,该函数可以使用正则表达式来完成您想做的事情。
要输入此用户定义的函数(UDF), alt-F11 将打开Visual Basic编辑器。
确保在“项目资源管理器”窗口中突出显示您的项目。
然后,从顶部菜单中选择Insert/Module
,然后
将下面的代码粘贴到打开的窗口中。
要使用此用户定义函数(UDF),请在某些单元格中输入诸如=replStr(A1)
之类的公式。
Option Explicit
Function replStr(str As String) As String
Dim RE As Object
Const sPat As String = "\u300C(?:(?=[^\u300D]*\u002F)(?=[^\u300D]*\u2015)[^\u300D]*)\u300D"
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.Pattern = sPat
replStr = .Replace(str, "")
End With
End Function