2016-06-29 9 views
2

ハイフネーションされた一連の文字セグメントで構成される文字列を含むスプレッドシートセルを指定すると、4番目のセグメントを抽出する必要があります。1つのセルから別のセルにデータを抽出する方法

たとえば、XX-XXX-X-G10 -XX-XXXのようなデータ文字列を含む列Aを考えてみましょう.Xは任意の文字を表します。結果としてG10を得るためには、どのような公式をB列に置く必要がありますか?

  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
  • 文字の範囲は(12、11、10)10から数え

長所:

  • シンプル

短所:

  • 作業これは同様である

    =SPLITANDEXTRACT(A1, "-", 3) 
    

    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 
    

    がその後にセル式を設定:定数ストリングと

+0

可変サイズの文字列が必要な場合は、私の公式を使用してください。 – Ralph

1

一つの方法は、(LibreOfficeの中で試験)以下の汎用マクロを使用することですあなたの他の質問への私の答え:https://stackoverflow.com/a/38085634/5100564Splitメソッドを提案した@Ralphに感謝します。

+0

VBAに関する記述はありません。代わりに、OPは式を求めた。 VBAを使うと簡単にでき、実際にははるかに短くできます。 – Ralph

+0

@Ralph - リンクされている他の質問がありますか? –

+0

はい、私はしました。だから、あなたはVBAの大ファンです。すばらしいです。私も。しかし、OPはこの投稿を参照せずに新しい質問を投稿しました。私はそこに理由があると思う。そして実際に(あなたがポストと彼自身の答えで見ることができるように)彼は式を求めていましたが、別のVBAソリューションは探していませんでした。 – Ralph

関連する問題