从字符串中间提取不同长度的字符串
Extracting the different length strings from the middle of a string
我正在尝试从下面的工作中提取 DocType(VARG、NOR、RMRN、CHNG、ADCN)sheet。如您所见,不同字符串中没有任何一致之处。我正在尝试提取字符串中嵌入的文档类型并将其放置在绘图 sheet 单元格左侧的相应文档类型单元格中。 las,我无法确定这样做的公式。任何帮助将不胜感激!
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))))))))))
“...不同字符串中没有任何一致之处”- 不正确。据我所见,第一个“-”之后的前 3-4 个字符包含数据类型。如果第 4 个字符是数字,则为 3 个字符。使用任何存在的数据一致性来创建根据需要调整数据的测试。
这可以像这样工作[假设您的数据从 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 中,从“-”之后的字符开始,return 包含 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))
所需子字符串前面是字符串中的第一个连字符,后面是下一个连字符或数字的解决方案:-
=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"}))),
"")
我正在尝试从下面的工作中提取 DocType(VARG、NOR、RMRN、CHNG、ADCN)sheet。如您所见,不同字符串中没有任何一致之处。我正在尝试提取字符串中嵌入的文档类型并将其放置在绘图 sheet 单元格左侧的相应文档类型单元格中。 las,我无法确定这样做的公式。任何帮助将不胜感激!
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))))))))))
“...不同字符串中没有任何一致之处”- 不正确。据我所见,第一个“-”之后的前 3-4 个字符包含数据类型。如果第 4 个字符是数字,则为 3 个字符。使用任何存在的数据一致性来创建根据需要调整数据的测试。
这可以像这样工作[假设您的数据从 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 中,从“-”之后的字符开始,return 包含 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))
所需子字符串前面是字符串中的第一个连字符,后面是下一个连字符或数字的解决方案:-
=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"}))),
"")