用函数过滤字符
子string已经出现在线上的最简单的方法是什么?
有可能这样做与function(意味着没有VBA)?
更多信息 :
如果我有像这样的细胞
* A * * B * * C * * D * * E * * F * | DATA | 结果| 1 | A | B | C | | E | F | d 2 | C | | | | E | F | ABD
有没有一个函数可以给出这个结果:
fx("ABCEF", "ABCDEF")
返回D
fx("CF", "ABCDEF")
返回ABDE
我怀疑simplest way
(或至less不是最短的),但肯定可能没有VBA:
= IF(ISERROR(MATCH( “A”,A2:F2,0)), “A”, “”)&IF(ISERROR(MATCH( “B”,A2:F2,0)), “B”, “” )IF(ISERROR(MATCH( “C”,A2:F2,0)), “C”, “”)&IF(ISERROR(MATCH( “d”,A2:F2,0)), “d”, “” )IF(ISERROR(MATCH( “E”,A2:F2,0)), “E”, “”)&IF(ISERROR(MATCH( “F”,A2:F2,0)), “F”, “” )
试试这个小UDF :
Public Function WhatsLeft(LittleString As String, BigString As String) As String WhatsLeft = BigString For i = 1 To Len(LittleString) c = Mid(LittleString, i, 1) WhatsLeft = Replace(WhatsLeft, c, "") Next i End Function
这可能是一个复杂的公式作为一个数组可能会做到这一点 – 但在编码网站,我会保持简单,并运行一个VBA的UDF
Sub Test() Debug.Print Updated("ABCEF", "ABCDEF") Debug.Print Updated("CF", "ABCDEF") End Sub
function
Function Updated(strRep As String, strIn As String) Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "[" & strRep & "]" .Global = True Updated = .Replace(strIn, vbNullString) End With End Function