繁体   English   中英

如何从动态范围中分割文本?

[英]How to split texts from dynamic range?

我从 ERP 系统下载了一个很长的数据集。 它们是 pipe | 划定的。 然后我必须拆分到单个列。 我可以使用FILTERXML()TEXTSPLIT()将它们拆分为列。 我试图动态使用 Textsplit function 以便如果任何新数据到达最后一行,它会自动拆分为列。 下面是我的示例数据(单个单元格中的每一行)。

HANG TAG (FG00028 NEXT||||(69 X 18)mm|||U LABEL|||||1631/2022|||||||||)             
BOX END LABEL (FG00781 NEXT||||(114 X 68)mm|||NEXT-BK|||||1804/22|||||||||)             
HANGER STICKER (FG00840 NEXT||||(40 X 40)mm|||WWL251|||||1616/22|||||||||)              
HANGER STICKER (FG00840 NEXT||||(34 X 17) mm|||WWL251|||||1621/2022|||||||||)               
CARE LABEL (FG00722 NEXT|CO-069593[QTY:2248]PER:0.35%|||(130X 25)mm|||NEXT-NF|||||1573/22|||||||||)             
CARE LABEL (FG00722 NEXT||||(130X 25)mm|||SWS-COM|||||1578/2022|||||||||)               
CASCADE CARD (FG00780 GEORGE|1078230-31-28-29|||(601 X 276.5) mm|||MUPC2||LIZ|||1639/22|||||||||)               
CARE LABEL (FG00722 NEXT||||(130X 25)mm|||SWS-SIM|||||1573/22|||||||||)             
CARE LABEL (FG00722 GEORGE|PO-1077981|||(20X70)mm|||CLGW|||||1734/2022|||||||||)                
BOX END LABEL (FG00781 NEXT||||(65X 105)mm|||BK|||||1177/22|||||||||)               
WOVEN MAIN LABEL (FG00806 GEORGE|PO-1084217 ERPNO-22S23P111037/1|||10X77MM|||GCBMF|||||1752/2022|||||||||)              
OVER RIDER (FG00826 Sainsbury|PP sample for developing|||31X95MM|||TU-DENOV-L2|||||365/22|||||||||)             
DISCLAIMER TAG (FG00829 SAINSBURY|2523229/141048665||||||TU-DISCSW24|||||1571/22|||||||||)              
HANGER STICKER (FG00840 GEORGE|1071004-1070769-70-1070764-65-66-67-1071006-1070776|||37X24MM|||MLH|||||1462/2022|||||||||)              
DISCLAIMER TAG (FG00829 SAINSBURY|2523238/1410980784||||||TU-DISCSW24|||||1572/22|||||||||)

到目前为止,我可以将TEXTSPLIT()TEXTJOIN()一起应用来动态拆分,例如-

=TEXTSPLIT(TEXTJOIN("#",TRUE,A1:A15),"|","#")

上面的公式给了我想要的结果,但我不能将它用于长数据集,因为TEXTJOIN()有字符限制。 那么,如何通过 excel 内置 function 从动态范围中拆分文本?

有一个带有MAKEARRAY()的 go :

在此处输入图像描述

B1中的公式:

=LET(X,TEXTBEFORE(SUBSTITUTE(A1:A15," (","|",1),")",-1),MAKEARRAY(ROWS(X),LEN(A1)-LEN(SUBSTITUTE(A1,"|",""))+1,LAMBDA(r,c,TEXTAFTER("|"&TEXTBEFORE(INDEX(X,r),"|",c),"|",-1))))

或者,更动态一点:

=LET(X,TEXTBEFORE(SUBSTITUTE(A1:INDEX(A:A,MATCH("ZZZ",A:A))," (","|",1),")",-1),MAKEARRAY(ROWS(X),LEN(A1)-LEN(SUBSTITUTE(A1,"|",""))+1,LAMBDA(r,c,TEXTAFTER("|"&TEXTBEFORE(INDEX(X,r),"|",c),"|",-1))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM