• ベストアンサー

文字列の抽出について

A1のセルに入力されている文字列の内容をスペース毎にC~Eに列に表示させるにはどうしたらいいのでしょうか?

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.10

こんな方法も…… C1に↓の式を入れ、C1:E2にコピー =TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",100)),100*COLUMN(A1)-99,100)) ただし、文字列が何十文字もあるような場合は上手くいかない可能性あり。

lastseven
質問者

お礼

ありがとう御座いました。

その他の回答 (10)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.11

項目は必ず3つあり、項目区切りは全角スペース 出来合いの関数の組み合わせで実現したい。 ということよければ、 C1=LEFT(A1,FIND(" ",A1,1)-1) D1=MID(A1,FIND(" ",A1,1)+1,FIND(" ",A1,FIND(" ",A1,1)+1)-FIND(" ",A1,1)-1) E1=RIGHT(A1,(LEN(A1)-FIND(" ",A1,FIND(" ",A1,1)+1))) とし、必要数下方向に複写するというのはいかがでしょうか。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.9

#5です。 私の回答は、一応、「関数による処理」ともいえると思うが。 ぴったりの、エクセル既定の関数は無いので、関数を組み合わせてやることになるが、却って、思い付きが要り、複雑になると思ったので、紹介したのだ。  仕事でエクセルを使うなら、VBAを勉強しないと、どうにもならんと思うよ。

lastseven
質問者

お礼

関数でどうにかなりました。

  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.8

すみません。よく見ると空白は全角ですね。全角に直しました。 C1 =LEFT(A1,FIND(" ",A1)-1) D1 =MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+1)-FIND(" ",A1)) E1 =MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,100)

  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.7

C列、D列、E列別々の数式です。 C1 =LEFT(A1,FIND(" ",A1)-1) D1 =MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+1)-FIND(" ",A1)) E1 =MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,100)

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.6

添付図参照 G列を空白のマンマ放置して、次式を入力したセル H1 を右方に(数値 99 が表示されるまで)オートフィル =IFERROR(FIND(" ",$A1,G1+1),99) 次式を入力したセル C1 を右方に(空白セルが表示されるまで)オートフィル =IFERROR(MID($A1,G1+1,H1-G1-1),"")

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

「区切り位置」の操作と同じことを、VBAでやると、私製関数を作って 標準モジュールに Function spt(a As Range, n) 'MsgBox a.Value 'MsgBox n splt = Split(a.Value, " ") spt = splt(n - 1) End Function 肝は、Split関数という関数がVBAにあることです。 ーー エクセルシートの どこでもよいが A12に 豚バラ肉 138円 A店 と(半角スペースで区切られた)文字列があるとして、 A13に 式 =spt($A$12,COLUMN()) と入れてB13、C13に式を複写すると A13:C13は 豚バラ肉 138円 A店 となります。

lastseven
質問者

補足

できれば関数を使用して処理したいと考えております。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

データが有るA1とA2を選択⇒ [データ]タブ⇒[区切り位置] [カンマやタブなどの・・・・] チェック ⇒[次へ] [スペース]をチェック ⇒[次へ]⇒ [表示先] にC1と入力⇒[完了]

lastseven
質問者

補足

できれば関数を使用して処理したいと考えております。

回答No.3

私は、こういうケースでは安直に次の関数を使っています。 Option Compare Database Public Function CutStr(ByVal Text As String, _            ByVal Separator As String, _            ByVal N As Integer) As String   Dim strDatas() As String   strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function

lastseven
質問者

補足

できれば関数を使用して処理したいと考えております。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

追記します。 A列を残し、C,D,E..と分割したい場合は A列をC列に複写し C列を分割してください。

lastseven
質問者

補足

できれば関数を使用して処理したいと考えております。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

エクセルの話でよければ、... 分割元のセルたちを選択し、 データタブ、区切り位置を選び、 区切り文字にスペースを選択することで 分割できます。

関連するQ&A