使用Excel进行字符串操作-如果存在其他部分,如何删除字符串的一部分?
我在谷歌上搜索了一下,什么也找不到,尽管我可能只是找错地方了。我也不太擅长VBA,但我相信我可以用正确的指针来解决它:) 我正在构建一个字符串,它是基于各种条件的各种单元格的串联。我按顺序打这些使用Excel进行字符串操作-如果存在其他部分,如何删除字符串的一部分?,excel,vba,string,worksheet-function,Excel,Vba,String,Worksheet Function,我在谷歌上搜索了一下,什么也找不到,尽管我可能只是找错地方了。我也不太擅长VBA,但我相信我可以用正确的指针来解决它:) 我正在构建一个字符串,它是基于各种条件的各种单元格的串联。我按顺序打这些 =IF(A405<>A404,G405,G405&H404) 如果存在Y,我只想删除D,如果存在Y,我只想删除 我该怎么办?(VBA或在单元格中,尽管我更喜欢在单元格中)可能更容易从末尾开始,在字符串开头添加内容,只有在Y不存在时才添加d。首先,为什么不在遍历所有单元格时保留一个字
=IF(A405<>A404,G405,G405&H404)
如果存在Y
,我只想删除D
,如果存在Y
,我只想删除
我该怎么办?(VBA或在单元格中,尽管我更喜欢在单元格中)可能更容易从末尾开始,在字符串开头添加内容,只有在Y不存在时才添加d。首先,为什么不在遍历所有单元格时保留一个字符串数组,然后在末尾将其全部连接起来 否则,您将使用INSTR和MID等字符串函数执行以下操作:
start1 = instr(myLongString,"Y, ")
if start1 > 0 Then
start2 = instr(myLongString,"D, ")
if start2 > 0 then
newLongString = left(myLongString, start2 - 1) & _
mid(myLongString, start2 + 3)
end if
end if
但是,正如我所说的,我会保留一个易于循环的数组,一旦你有了所有你知道你将要使用的值,就在最后把它们连接起来。我想D可能会出现在任何地方,那么:
If InStr(strString, "Y") > 0 Then
strString = Replace(strString, "d", "")
strString = Replace(strString, " ", "")
strString = Replace(strString, " ,", "")
strString = Replace(strString, ",,", ",")
End If
尝试:
但这是假设在D后面总是有逗号和空格。我也通过电子邮件得到了这个可能的解决方案:
=IF(A15<>A14,G15,IF(OR(AND(G15="CR247, ",ISNUMBER(FIND("CR247, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR215, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR180, ",H14))),AND(G15="CR180, ",ISNUMBER(FIND("CR215, ",H14))),G15="CR113, "),H14,G15&H14))
=IF(A15A14,G15,IF(或(和(和)(和)(G15=“CR247,”,ISNUMBER(查找(“CR247,”,H14)))和(G15=“CR149,”,ISNUMBER(查找(“CR215,”,H14)))和(G15=“CR180,”,ISNUMBER(查找(“CR215,”,H14)),G15=“CR113,”,H14,”)
(具有具有优先规则的“真实”值)
这看起来与奥巴马的答案相对类似
有更好的解决办法吗 如果要删除的组合不太多,可以使用=If(查找(“D”;A2)>0;替换(A2;1;3;“”);A2) VBA:始终可以使用regexp对象。 我认为,只要正确构建正则表达式,就可以在脚本上测试任何内容 签出:(供regexp参考)
还有一个测试regexp的简单工具: 在单元格中:您可以用一种更加友好的方式来完成:
假设在A:A列上有值。
您可以在执行检查的位置添加一个新列
if(间接(“A”&row())间接(“A”&row()-1)、间接(“G”&row())、间接(“G”&row())和间接(“H”&row())
或者不管值是什么。然而,我猜想if语句的一个分支上的值应该是空的。在此之后,只连接B:B列值(如果需要,跳过空格)
希望这能有所帮助。您需要在FIND语句中使用ISERROR或ISNUMBER,以防它找不到它要找的内容(因此您必须切换这两个案例)。fwiw:这是我最后使用的答案-感谢其他建议!!
=IF(ISERROR(FIND("Y",A1)),A1,SUBSTITUTE(A1,"D, ",""))
=IF(A15<>A14,G15,IF(OR(AND(G15="CR247, ",ISNUMBER(FIND("CR247, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR215, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR180, ",H14))),AND(G15="CR180, ",ISNUMBER(FIND("CR215, ",H14))),G15="CR113, "),H14,G15&H14))