Excelの数式を使用して、コンマ区切りの文字列から部分文字列を抽出する


回答:


3

VBAを使用して、式として使用できるカスタム関数を作成できます。これをする:

  1. Visual Basicを開きます(Alt + F11)
  2. 新しいモジュールを作成します(挿入->モジュール)
  3. 次のコードをコピーして貼り付けます。

Public Function custom_split(str As String, num As Long, Optional delimeter As String = " ") As String
    Dim substrs() As String
    substrs = split(str, delimeter)
    If UBound(substrs) < num Then
        custom_split = ""
    Else
        custom_split = Trim(substrs(num))
    End If
End Function

次に、Visual Basicウィンドウを閉じてExcelに戻ります。

例に従って式を使用するには、次のように入力します。

  • B1:= custom_split(A1; 0; "、")
  • C1:= custom_split(A1; 1; "、")
  • 等...

カンマを変更して、他の文字で分割できます。

カスタム式の唯一の欠点は、ファイルを開くたびにマクロを有効にするよう警告が表示されることです。


2

Left()コンマが見つかるまで文字を数える予備のワークシートのいくつかの列を使用してこれを行いました。次のように見えました。

    A                          B                C                D
1    Text                    1st Comma        2nd Comma        3rd comma
2 =(cell ref to text)&","   =find(",",a2,0)  =find(",",a2,b2) =find(",",a2,c2)

Referring to your original sheet:
B1: =Left(a1,NewSheet!B2)
C1: =Mid(A1, NewSheet!B2+1, NewSheet!C2-NewSheetB2)
D1: =Mid(A1, NewSheet!(C2+1 NewSheet!d2-Newsheet!c2)

NewSheetで、テキストにカンマを含めることができると考えられる数の列を作成します。数が多い場合は、おそらくVBAソリューションを使用する必要があります。

エラー(文字列にコンマがない場合は#value)が発生しないように、文字列の末尾にコンマを付けていることに注意してください。元の文字列の長さより大きい結果をテストするか、コンマを見つけられない関数=iferror()を処理するために使用でき=find()ます。最後=Trim()に、コンマの後にスペースを使用して文字列が一貫していない場合に使用します。


1

テキスト関数Left、Mid、Rightを使用できます。Leftでは、テキスト文字列の左側からいくつかの文字を抽出できます。Rightは、テキスト文字列の右側から同じことを行います。Midでは、左からいくつかの文字を除外し、次のx個の文字を取得するように指示します。

[関数の挿入]ダイアログボックスに移動すると(数式バーの横にある[fx]をクリック)、[テキスト]カテゴリの下にこれらの関数が表示されます。


ありがとう。問題は、,任意の位置に配置できることです。とにかく、使用してSEARCHMID保持するために、中間列の,位置と、いくつかのネストされたIF私はこれを行うことができたのを。
カルロスグティエレス

@Carlos、回答を自分で投稿して、他の人にも利益をもたらすようにしてください。
アルジャン

@Arjan -私の式は、私は、彼らが誰の利益になる疑うので複雑です(でも、私は:-)今日それらを読むことができない、dtangソリューションは、多くの優れている
カルロス・グティエレス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.