读取Excel长文字内容中的规格数据
江苏大侠的方法:函数
取巧思路:可以发现我们要取的是单字节的字符,利用MIDB,FINDB,LENB等能区分双字节和单字节的文本函数来取巧。 | |||||||||||||
![]() | |||||||||||||
![]() | |||||||||||||
当提取到双字节的前面一个字符串时,该字符串后面会有一个空格(可以理解为双字节的一半为空格),再用VLOOKUP("* ",…来匹配。 | |||||||||||||
完整公式=IFNA(VLOOKUP("* ",MIDB($B2&"侠",SMALL(IF(LENB(TRIM(MIDB($B2,ROW($1:998),2)))=1,ROW($2:999)),COLUMN()*2-7),ROW($1:99)),1,),"") | |||||||||||||
也可以用MMULT来判断规格的起始位置=IFNA(VLOOKUP("* ",MIDB($B2&"侠",SMALL(IF(MMULT(N(MIDB($B2,ROW($1:998)+{0,1},1)=" "),{1;9})=1,ROW($2:999)),COLUMN()-3),ROW($1:99)),1,),"") | |||||||||||||
规格不重复的公式=IFNA(TRIM(VLOOKUP("* ",MIDB($B18,SEARCHB("?",$B18,FINDB(C18,$B18)+LEN(C18)),ROW(1:104)),1,))," ") | |||||||||||||
A.1.1.4 | 地面铺贴40mm宽ST-09卡地亚灰石材波打线 | 40mm | ST-09 |
Excel小子的方法:VBA
Function tiqu(rg As Range, i) 'excel小子
Dim re, m, mm
Set re = CreateObject("vbscript.regexp")
re.Global = True
re.Pattern = "[\x00-\xff]+"
Set m = re.Execute(rg.Value)
If i > m.Count Then
tiqu = ""
Else
tiqu = m(i - 1)
End If
End Function