こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

文字列の抽出について

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

投稿日時 - 2019-02-04 19:58:38

QNo.9584671

困ってます

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

こんな方法も……
C1に↓の式を入れ、C1:E2にコピー
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",100)),100*COLUMN(A1)-99,100))

ただし、文字列が何十文字もあるような場合は上手くいかない可能性あり。

投稿日時 - 2019-02-05 11:05:02

お礼

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

投稿日時 - 2019-02-07 17:50:15

ANo.10

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(11)

ANo.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)))

とし、必要数下方向に複写するというのはいかがでしょうか。

投稿日時 - 2019-02-05 21:44:24

ANo.9

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

投稿日時 - 2019-02-05 10:13:34

お礼

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

投稿日時 - 2019-02-07 17:49:38

ANo.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)

投稿日時 - 2019-02-05 00:23:43

ANo.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)

投稿日時 - 2019-02-05 00:12:21

ANo.6

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

投稿日時 - 2019-02-04 22:24:07

ANo.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店
となります。

投稿日時 - 2019-02-04 21:47:05

補足

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

投稿日時 - 2019-02-04 22:01:28

ANo.4

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

投稿日時 - 2019-02-04 21:13:18

補足

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

投稿日時 - 2019-02-04 22:01:15

ANo.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

投稿日時 - 2019-02-04 21:10:30

補足

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

投稿日時 - 2019-02-04 22:01:36

ANo.2

追記します。

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

投稿日時 - 2019-02-04 20:19:51

補足

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

投稿日時 - 2019-02-04 22:01:45

ANo.1

エクセルの話でよければ、...

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

投稿日時 - 2019-02-04 20:17:08

あなたにオススメの質問