我正在尝试从下面的工作表中间提取DocType(VARG,NOR,RMRN,CHNG,ADCN)。如您所见,不同字符串中没有任何一致性。我正在尝试提取嵌入在字符串中的doctype,并将其放在图纸单元格左侧的相应doctype单元格中。唉,我无法确定这样做的公式。任何帮助将不胜感激!
DocType Drawing Sheet
100188-NOR03046
10190635-VARG003-V-013R1
10190635-VARG003-V-018
1086-CHNG121701
10908077-RMRNR0190
11613002-NOR1-1
11627748-NOR07146
11639519-ADCN30352
116-NOR6458
11664680-NOR75941R1
12292527-NORGEO-5343
12292400-NORWIP09335
12292527-NORGEO-5343
我使用过这个公式:
= MID(I679,SEARCH( “ - ”,I679)+ 1,IF(ISERROR(VALUE(MID(I679,SEARCH( “ - ”,I679)+4,1))),4,3))
但是对于下面列出的值,我得到了以下结果:
DocType Drawing Sheet Correct Result Should Be
NORG 12292527-NORGEO-5343 NOR
NORW 12292400-NORWIP09335 NOR
VARG 10190635-VARG003-V-013R1 VAR
VARG 12292-VARG003-V-016 VAR
R-AD 12295729-R-ADCN167238 ADCN
31-A 12359705-31-ADCN71449 ADCN
R2-A RM12293172-R2-ADCN183214 ADCN
129 RM-12976612-RM2-ADCN183868 ADCN
19- B5-19-1676-NORFSV00098R1 NOR
NORW 12517164-NORWIP10095 NOR
如果您需要更多示例,请告诉我。
我也尝试了以下公式,但它只产生了0(零):
=IF(I9="*VAR*","VAR",IF(I9="*ADCN*","ADCN",IF(I9="*CHNG*","CHNG",IF(I9="*DEVN*","DEVN",IF(I9="*EER*","EER",IF(I9="*NOR*","NOR",IF(I9="*PPEP*","PPEP",IF(I9="*RMRN*","RMRN",IF(I9="*SCN*","SCN",IF(I9="*WAIV*","WAIV",0))))))))))
答案 0 :(得分:0)
" ...在不同的字符串中没有任何一致性" - 不正确。从我所看到的,第一个" - "之后的前3-4个字符。包含数据类型。 3如果第4个字符是数字,则为字符。使用存在的任何数据一致性来创建根据需要对齐数据的测试。
这样可以这样工作[假设您的数据在B2中开始,此公式在C2中进行,并被拖下来]:
=SEARCH("-",B2)
这为您提供了第一个" - "在牢房里。然后把它放在D2中并向下拖动:
=ISERROR(VALUE(MID(B2,C2+4,1)))
这会尝试在" - "之后转换字符4空格。成为一个价值。如果它是一个字母,它将创建一个错误,结果为TRUE。否则它将显示FALSE。
然后把它放在E2中并向下拖动:
=MID(B2,C2+1,IF(D2,4,3))
这样说 - 取单元格B2,然后从" - "之后的字符开始,返回3-4个字符的文本。如果D2为TRUE [上述公式中存在错误,意味着第4个字符不是数字],则为4个空格。否则,如果D2为FALSE,则为3个空格。
这可以替代地全部放在C2中的单个公式中,如下所示:
=MID(B2,SEARCH("-",B2)+1,IF(ISERROR(VALUE(MID(B2,SEARCH("-",B2)+4,1))),4,3))
答案 1 :(得分:0)
对于所需子字符串前面有字符串中第一个连字符并后跟下一个连字符或数字的情况的解决方案: -
=LEFT(RIGHT(B2,LEN(B2)-FIND("-",B2)),
MIN(IF(ISNUMBER(FIND({0,1,2,3,4,5,6,7,8,9,"-"},RIGHT(B2,LEN(B2)-FIND("-",B2)))),
FIND({0,1,2,3,4,5,6,7,8,9,"-"},RIGHT(B2,LEN(B2)-FIND("-",B2)))))-1)
如果您有可能的文档类型列表,可以像这样搜索它们: -
=IFERROR(
INDEX({"ADCN","CHNG","DEVN","EER","NOR","PPEP","RMRN","SCN","VAR","WAIV"},
MATCH("ZZZ",IF(ISNUMBER(FIND( {"ADCN","CHNG","DEVN","EER","NOR","PPEP","RMRN","SCN","VAR","WAIV"},B2)),
{"ADCN","CHNG","DEVN","EER","NOR","PPEP","RMRN","SCN","VAR","WAIV"}))),
"")