- ベストアンサー
Excelで1つのセルに3つの情報を入れた情報の抽出方法は?
いつも教えてもらいありがとうございます。 今Excelにて1つのセルの中に3つから4つの情報が半角スペースで開けて入れているのですが、 別シートにそれらを分けて1つのセルに1つの情報を入れたいのですが、 1つ目の情報は文字列操作関数SEARCHとLEFTの組み合わせで 抽出することが出来たのですが、2つめ以降が上手くいきません。 どうすればできますか教えてください。
- みんなの回答 (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)))
その他の回答 (3)
- pkh4989
- ベストアンサー率62% (162/260)
こんにちは。 以下のマクロで、試してみてください。 但し、検索シートの範囲は「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を押してマクロ一覧からマクロ名を選択して実行
お礼
ありがとうございます。 VBAは現在勉強中ですが、貼り付け方まで書いていただいて 感謝です。 がんばってみます。
- kokorone
- ベストアンサー率38% (417/1093)
関数を使うと、とんでもなく複雑になります。 メニュー操作ではいけないでしょうか? 参照URLに詳しく出ています。
- redowl
- ベストアンサー率43% (2140/4926)
関数で解決するより、 「データ」メニューの「区切り位置・・・」 http://bio.ics.kagoshima-u.ac.jp/~ohno/ECL/6/excel2.html の方が楽なケースかな・・・
お礼
ありがとうございます。 どうしても関数でやっつけたくなる癖がありまして・・・ 区切り位置の使い方勉強になりました。 情報量が多く、文字数などが不規則なので、応用して目的の ことが出来るようにやってみようかと思います。
お礼
ありがとうございます。 これだけ長い関数を書いていただくなんて 感謝感謝です。 でも、なんで1つのセルからデータを分割抽出 するだけなのに適切な1つの関数がないんでしょうかね?