プロが教えるわが家の防犯対策術!

いつも教えてもらいありがとうございます。

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

A 回答 (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)))
    • good
    • 1
この回答へのお礼

ありがとうございます。
これだけ長い関数を書いていただくなんて
感謝感謝です。

でも、なんで1つのセルからデータを分割抽出
するだけなのに適切な1つの関数がないんでしょうかね?

お礼日時:2007/05/28 17:11

こんにちは。



以下のマクロで、試してみてください。
但し、検索シートの範囲は「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を押してマクロ一覧からマクロ名を選択して実行
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/28 17:07

関数を使うと、とんでもなく複雑になります。


メニュー操作ではいけないでしょうか?

参照URLに詳しく出ています。

参考URL:http://www.relief.jp/itnote/archives/000133.php
    • good
    • 1

関数で解決するより、



「データ」メニューの「区切り位置・・・」
http://bio.ics.kagoshima-u.ac.jp/~ohno/ECL/6/exc …
の方が楽なケースかな・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/28 11:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!