Pie*_*erk 22 extract string microsoft-excel
我正在寻找一种从字符串中提取可变长度子字符串的方法。
我的细胞看起来像:
ABC - DEF
ABCDE - DEF
ABCD - ABC
Run Code Online (Sandbox Code Playgroud)
我想在字符处拆分字符串-,因此单元格将变为:
ABC
ABCDE
ABCD
Run Code Online (Sandbox Code Playgroud)
这应该使用公式而不是 VBScript 来完成。
我正在使用 Excel 2010
编辑
我发现数据集并不总是包含-字符,这意味着应该没有变化。
And*_*son 26
这个问题可以分为两步:
"-"或" - ")。的FIND和SEARCH命令每个将返回的一个给定的索引needle在haystack(FIND是大小写敏感的,SEARCH是不区分大小写的,并允许通配符)。鉴于此,我们有:
FIND(search_text, source_cell, start_index)
Run Code Online (Sandbox Code Playgroud)
或者在这种情况下:
FIND(" - ", A1, 1)
Run Code Online (Sandbox Code Playgroud)
一旦我们有了索引,我们就需要前缀 ofsource_cell来进行“拆分”。MID就是这样:
MID(source_cell, start_index, num_characters)
Run Code Online (Sandbox Code Playgroud)
把它们放在一起,我们有:
=MID(A1,1,FIND(" - ",A1,1))
Run Code Online (Sandbox Code Playgroud)
A1 的文本为ABC - DEFgive ABC。
根据您的编辑扩展安德鲁的答案:要找到要拆分的字符串,我们正在使用该FIND函数。如果FIND无法定位给定的字符串,则返回#VALUE?错误。所以我们需要检查这个值并使用替代值。
要检查任何错误值,包括#VALUE,我们使用该ISERROR函数,因此:
=ISERROR(FIND(" - ", A1, 1))
Run Code Online (Sandbox Code Playgroud)
如果该FIND函数在 A1 单元格中找不到“-”字符串,则为真。所以我们用它来决定使用哪个值:
=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))
Run Code Online (Sandbox Code Playgroud)
也就是说,如果 find 命令返回错误,请使用未修改的 A1 单元格。否则,执行MID安德鲁已经提供的功能。
| 归档时间: |
|
| 查看次数: |
191350 次 |
| 最近记录: |