• ベストアンサー

Excelで1つのセルに3つの情報を入れた情報の抽出方法は?

いつも教えてもらいありがとうございます。 今Excelにて1つのセルの中に3つから4つの情報が半角スペースで開けて入れているのですが、 別シートにそれらを分けて1つのセルに1つの情報を入れたいのですが、 1つ目の情報は文字列操作関数SEARCHとLEFTの組み合わせで 抽出することが出来たのですが、2つめ以降が上手くいきません。 どうすればできますか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

A1にデータがあるとして一番目から四番目を取り出すそれぞれの式 =IF(ISERROR(SEARCH(" ",A1,1)),"",(LEFT(A1,SEARCH(" ",A1,1)-1))) =IF(ISERROR(SEARCH(" ",A1,SEARCH(" ",A1,1)+1)),"",MID(A1,SEARCH(" ",A1,1)+1,SEARCH(" ",A1,SEARCH(" ",A1,1)+1)-1-SEARCH(" ",A1,1))) =IF(ISERROR(SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,1)+1)+1)),"",MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,1)+1)+1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,1)+1)+1)-1-SEARCH(" ",A1,SEARCH(" ",A1,1)+1))) =IF(ISERROR(SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,1)+1)+1)),"",MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,1)+1)+1)+1,LEN(A1)))

hatenaman
質問者

お礼

ありがとうございます。 これだけ長い関数を書いていただくなんて 感謝感謝です。 でも、なんで1つのセルからデータを分割抽出 するだけなのに適切な1つの関数がないんでしょうかね?

その他の回答 (3)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.3

こんにちは。 以下のマクロで、試してみてください。 但し、検索シートの範囲は「A1~使用ROW,使用Column」です。 展開はシート「Sheet2」にされます。 Sub 文字列分割()   Dim wRng1 As Range   Dim wR   As Long   Dim wC   As Integer   Dim wh1   As Worksheet   Dim wStr  As String   Dim wChr  As String   Dim wI   As Integer   Dim wRow  As Long   '   '検索範囲(A1:??)   Application.ScreenUpdating = False   With ActiveSheet                '検索シート     wR = .Range("A" & Rows.Count).End(xlUp).Row     wC = .UsedRange.Columns.Count     Set wRng1 = .Range(.Cells(1, 1), .Cells(wR, wC))     For Each c In wRng1       If c.Row <> wRow Then         wRow = c.Row         wC = 0       End If       wStr = c.Value       If wStr <> "" Then         wI = 1         wChr = 1         Do While wI > 0           wI = InStr(1, wStr, " ")           wC = wC + 1           If wI > 1 Then             wChr = Left(wStr, wI - 1)             wStr = Mid(wStr, wI + 1)             Worksheets("Sheet2").Cells(c.Row, wC) = wChr  '←展開シート(Sheet2)           Else             Worksheets("Sheet2").Cells(c.Row, wC) = wStr  '←展開シート(Sheet2)           End If         Loop       End If     Next   End With   Application.ScreenUpdating = True End Sub マクロ貼付 (1) Alt+F11 (ツール → マクロ → Visual Basic Editor) →「挿入」→「標準モジュール」で表示される画面に貼り付け (2) 実行は、(F5を押す)又は、シート画面に戻って Alt+F8を押してマクロ一覧からマクロ名を選択して実行

hatenaman
質問者

お礼

ありがとうございます。 VBAは現在勉強中ですが、貼り付け方まで書いていただいて 感謝です。 がんばってみます。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

関数を使うと、とんでもなく複雑になります。 メニュー操作ではいけないでしょうか? 参照URLに詳しく出ています。

参考URL:
http://www.relief.jp/itnote/archives/000133.php
  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.1

関数で解決するより、 「データ」メニューの「区切り位置・・・」 http://bio.ics.kagoshima-u.ac.jp/~ohno/ECL/6/excel2.html の方が楽なケースかな・・・

hatenaman
質問者

お礼

ありがとうございます。 どうしても関数でやっつけたくなる癖がありまして・・・ 区切り位置の使い方勉強になりました。 情報量が多く、文字数などが不規則なので、応用して目的の ことが出来るようにやってみようかと思います。

関連するQ&A