答:右键工作表标签,选择查看代码,复制下面代码进去。然后可以在B列输入关键字,就会得到结果。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Dim TempStr As String
On Error Resume Next
If Target.Column = 2 Then
Set Cell = Cells(Target.Cells(1, 1).Row, "A")
TempStr = Left(Cell, InStr(1, Cell, Target) - 1)
Target.Offset(0, 1) = Replace(Replace(Mid(TempStr, InStrRev(TempStr, Chr(10)), Len(TempStr)), "=", ""), " ", "")
End If
End Sub
下面给出两种方法:
方法1. 如果会用vba的话可以考虑自定义函数:
按alt+f11唤出vbe编辑窗口,插入-模块,将下方代码贴入:
Public Function Zstr(str As String, tj As String)
With CreateObject("Vbscript.Regexp")
.Pattern = "^(\d+).*" & tj & ".*"
.Global = True
.MultiLine = True
.ignorecase = False
If .test(str) Then
Set mh = .Execute(str)
Zstr = mh(0).submatches(0)
Else
Zstr = CVErr(xlErrNA)
End If
End With
End Function
回到工作表中
在c1里输入如下公式:=zstr(A1,B1)
方法2. 公式(略长):
=--LEFT(TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",LEN(A1)+200)),MAX(1,FIND(B1,SUBSTITUTE(A1,CHAR(10),REPT(" ",LEN(A1)+200)))-200),FIND(B1,SUBSTITUTE(A1,CHAR(10),REPT(" ",LEN(A1)+200))))),FIND("=",TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",LEN(A1)+200)),MAX(1,FIND(B1,SUBSTITUTE(A1,CHAR(10),REPT(" ",LEN(A1)+200)))-200),FIND(B1,SUBSTITUTE(A1,CHAR(10),REPT(" ",LEN(A1)+200))))))-1)
也不知道现在的90后怎么搞的,让我们现在真难遇到像以上提问一样、条件和问题都描述得具体、详细的优秀的提问了!