2016-06-29 228 views
2

如果电子表格单元格包含由连字符序列组成的字符串,则需要提取第四个分段。如何将数据从一个单元格提取到另一个单元格

例如,考虑包含数据字符串的列A,如XX-XXX-X- G10 -XX-XXX,其中X表示任何字符。我需要在B列中放置什么公式才能获得G10?

  A    B 
1 XX-XXX-X-G10-XX-XXX  G10 

我正在寻找可以在Libre Office Calc,Open Office Calc,MS Excel或Google表格中使用的公式。

回答

2

这是非常简单... MID是正确的功能:

= MID(A1; 10; 3)

其中:

  • A1是我的数据
  • 从10个字符开始 - 在我方案G
  • 范围的字符计数从10(10,11,12)

优点:

  • 简单

缺点:

  • 只能工作具有恒定字符串
+0

如果您想要一个可变大小的字符串,请使用我的公式。 – Ralph

1

的一种方法是使用下面的通用的宏(在LibreOffice的测试):

Function SplitAndExtract(findIn As String, delims As String, _ 
         Optional segment_param As Integer) 
    ' findIn - string or cell to search in 
    ' delims - the delimiters to split the string up by 
    ' segment - which segment number to grab 
    If IsMissing (segment_param) Then 
     segment = 0 
    Else 
     segment = segment_param 
    End If 
    splits = Split(findIn, delims) 
    If UBound(splits) < segment - 1 Then 
     SplitAndExtract = "No result for that segment" 
     MsgBox "No result for that segment" 
     Exit Function 
    Else 
     SplitAndExtract = splits(segment) 
    End If 
End Function 

然后设置单元公式:

=SPLITANDEXTRACT(A1, "-", 3) 

这类似于到我的回答你的另一个问题:https://stackoverflow.com/a/38085634/5100564。感谢@Ralph提出的Split方法。

+0

没有提到VBA。相反,OP要求一个公式。使用VBA很容易,实际上可以缩短得多。 – Ralph

+0

@Ralph - 你有没有看到有关联的其他问题? –

+0

是的,我做到了。所以,你是VBA的忠实粉丝。大。我也是。然而,OP没有引用这篇文章发布了一个新问题。我想这可能是有原因的。事实上(正如你在帖子和他自己的回答中看到的那样),他正在寻找一个公式,而不是另一个VBA解决方案。 – Ralph

相关问题