Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于单元格长度使用设置单元格值_Excel_Vba_Excel Formula - Fatal编程技术网

Excel 基于单元格长度使用设置单元格值

Excel 基于单元格长度使用设置单元格值,excel,vba,excel-formula,Excel,Vba,Excel Formula,我在D列中有这种产品id: 1942-PS-M-01 1942-PS-M-233 1942-P-M-25 1942-P-L-200 我想使用产品id值中的最后2/3数字设置G列中的值 我尝试使用公式,如=MID[Product_ID],11,3和=MID[Sample_ID],10,3,但这些ID都无效,我必须按1输入公式1,因为ID没有相同的长度 使用vba有没有办法做到这一点?因为我有将近20000行数据 我有一个想法,比如使用if len[Product_ID]使用以下公式: =MID(D

我在D列中有这种产品id:

1942-PS-M-01 1942-PS-M-233 1942-P-M-25 1942-P-L-200 我想使用产品id值中的最后2/3数字设置G列中的值

我尝试使用公式,如=MID[Product_ID],11,3和=MID[Sample_ID],10,3,但这些ID都无效,我必须按1输入公式1,因为ID没有相同的长度

使用vba有没有办法做到这一点?因为我有将近20000行数据


我有一个想法,比如使用if len[Product_ID]使用以下公式:

=MID(D1,FIND("-",D1,FIND("-",D1,FIND("-",D1)+1)+1)+1,LEN(D1))
只要您的产品id中始终有三个破折号,这将起作用。它会查找第一个破折号的位置,然后查找第二个破折号,然后查找第三个破折号,并在第三个破折号后提取字符串的其余部分。

研究RegExp或转到此处->Try formula=TrimRightSubstitutionMD2,-,REPT,99,99。