在Excel中提取单元的一部分

例如,我有一个特定的单元格

CN=Cloud Test1,OU=Corp,OU=BT-Users,OU=BTATTER,OU=Test,OU=AD UAT,OU=Services,OU=Managed Users,DC=ngco,DC=com 

OU =的数量因logging不同而不同,我的目标是只提取OU = infront的任何东西,所以基本上我想:

 "OU=Corp,OU=BT-Users,OU=BTATTER,OU=Test,OU=AD UAT,OU=Services,OU=Managed Users" 

作为我的输出。

再次感谢你的帮助!

作为一个数组公式:

 =TEXTJOIN(", ",TRUE,IF(LEFT(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",999)),(ROW(1:99)-1)*999+1,999)),2)="OU",TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",999)),(ROW(1:99)-1)*999+1,999)),"")) 

作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认。

TEXTJOIN()仅适用于Office 365 Excel订阅。

在这里输入图像说明


如果您没有TEXTJOIN(),请将此代码放在附加到工作簿的模块中,然后使用上述公式:

 Function TEXTJOIN(delim As String, skipblank As Boolean, arr) Dim d As Long Dim c As Long Dim arr2() Dim t As Long, y As Long t = -1 y = -1 If TypeName(arr) = "Range" Then arr2 = arr.Value Else arr2 = arr End If On Error Resume Next t = UBound(arr2, 2) y = UBound(arr2, 1) On Error GoTo 0 If t >= 0 And y >= 0 Then For c = LBound(arr2, 1) To UBound(arr2, 1) For d = LBound(arr2, 1) To UBound(arr2, 2) If arr2(c, d) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c, d) & delim End If Next d Next c Else For c = LBound(arr2) To UBound(arr2) If arr2(c) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c) & delim End If Next c End If TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) End Function