Excel表格高手请进

来源:百度知道 编辑:UC知道 时间:2024/05/15 13:26:06
就是我有一库存
00142HM--BGA-313D1 后面的313D1 (D后面的数字是数量1)
0015-138--SOP-16L2 下面以此类推 (L后面的数量是2)
0015-142--SOP-16L5
0015-143--SOP-16L9
001875A--DIP-16L6
0019MPO--SOP-24L1
0020CDM--DIP-20L24
本来在EXCEL是在A列里 能不能实现把它们分成 00142HM--BGA-313D1
A B C D
型号 封装 说明 数量
00142HM BGA 313D 1

公式比较复杂,我将它分成了5部分,放在B2:F2单元格。
例如我将00142HM--BGA-313D1拆分为
00142HM,BGA,313D1,313D,1
就是最后一项分步骤的分开,这样节省一下公式长度。

B2单元格公式:
=REPLACE(A2,FIND("--",A2),LEN(A2),"")

公式含义找到"--"的位置,将"--"后面的字符都替换掉。
0015-143--SOP-16L9这样的型号应该是"0015-143"吧,我这么理解。
------

C2单元格公式:
=LEFT(SUBSTITUTE(A2,B2&"--",""),FIND("-",SUBSTITUTE(A2,B2&"--",""))-1)

这个是从替换掉型号的字符串中找到"-",返回它之前的字符串。就是从SOP-16L5找到-的位置,返回前面的字符串。

-------
D2单元格公式:
=RIGHT(A2,LEN(A2)-FIND("-",A2,LEN(B2)+LEN(C2)+3))

找到A2单元格第四个"-"符号,返回后面的字符
-------

E2单元格公式:
=LEFT(D2,LOOKUP(MATCH(1,1/FIND({"D","L"},D2)),{1,2},FIND({"D","L"},D2)))

判断是包含D还是L,返回D或者L的位置.并返回之前的字符串。
D/L还可以增加。例如FIND({"D","L","H"},后面的{1,2}则要改为{1,2,3}

----